안녕하세요! c++용 twitter라이브러리를 얼마전부터 만들고 있습니다. 현재 계속 만들고 있는 상태입니다.
간단히 생각했었는데 라이브러리를 만든다는게 쉽지가 않네요^^
전체적으로 완성되면 공개할까 생각했었는데 너무 오래걸릴것 같아서 조금씩 공개를 하도록 하겠습니다.
일단 첫번째로 OAuth인증과정입니다.
#include <twit/Twitter.h>
#include <stdio.h>
#if defined(WIN32)||defined(_WIN32)
# if _DEBUG
# pragma comment(lib,"../../../lib/twit4cppd.lib")
# else
# pragma comment(lib, "../../lib/twit4cpp.lib")
# endif
#endif
using namespace std;
using namespace Twit;
int main(int argc, char* argv[])
{
/* twit4cpp Sample Application */
try
{
string
customerKey("2rBtCAh5o10zMlS2FbRYAA"),
customerSecert("MoZvHvDGbi6zoPu6Q1SZHsalGynP8qWt9dlB1NKlvQg");
Twitter twit(customerKey, customerSecert);
/***
* 1. 사용자 인증 URL 가져오기
*/
string authUrl = twit.OAuth.getUserAuthorizeUrl();
printf("url :\n%s\n", authUrl.c_str());
/***
* 2. 사용자가 해당 url로 이동하여 직접 인증후 받은 pin번호 입력
*/
char pin[10]={0,};
printf("Enter PIN number : ");
scanf("%s", pin);
/***
* 3. access token 요청
*/
string aToken, aSecret;
string screenName;
Value::UniqueID userId;
screenName = twit.OAuth.getAccessToken(pin, aToken, aSecret, &userId);
printf("ScreenName : %s\n", screenName.c_str());
printf("userId : %s\n", userId.toString().c_str());
printf("AccessToken : %s\n", aToken.c_str());
printf("AccessTokenSecret : %s\n", aSecret.c_str());
}
catch(const Error& e)
{
printf("code : %d\n", e.getCode());
printf("message : %s\n", e.getMessage().c_str());
}
return 0;
}
먼저 Twit 이라는 네임스페이스로 모든 클래스들을 묶었습니다.
그리고 안에 Twitter라는 클래스가 있고 해당 클래스를 통해 모든 트위터 기능을 사용하는 구조입니다.
Twitter twit(customerKey, customerSecret);
Twitter 객체 생성시 customer key와 customer secret값을 넘겨줍니다.
string authUrl = twit.OAuth.getUserAuthorizeUrl();
Twitter클래스내의 OAuth객체내의 getUserAuthorizeUrl함수를 통해 사용자 인증 url을 가져옵니다.
해당 함수가 리턴한 url로 사용자가 직접 인증을 하도록 해야합니다.
string aToken, aSecret;
string screenName;
Value::UniqueID userId;
screenName = twit.OAuth.getAccessToken(pin, aToken, aSecret, &userId);
getAccessToken함수를 통해 access token을 가져옵니다.
pin : 사용자인증후 트위터에서 리턴한 pin번호
aToken : 트위터로부터 받게될 access token값을 저장할 std::string변수
aSecret : 트위터로부터 받게될 access token secret값을 저장할 std::string변수
userId : access token에 해당하는 사용자의 id값이 저장될 UniqueID변수
먼저 첫번째 인자를 제외한 나머지 3개의 인자는 모두 리턴값입니다.
그리고 getAccessToken의 리턴값은 screen name (사용자id)입니다.
정리하자면 Twitter 객체를 생성한후 OAuth.getUserAuthorizeUrl 로 사용자 인증URL을 가져오고
해당 URL로 사용자가 직접인증후 한후 받은 pin번호를 OAuth.getAccessToken에 넘기면 최종적으로 access token를 획득하게 됩니다.
음.. 너무 두서 없고 내용을 부실하게 적었네요.. 나중에 다시 정리를 하도록 하겠습니다.