ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • twit4cpp - 트위터 Twitter API : OAuth 인증 예제
    Programming/twitterAPI 2010. 10. 27. 00:58

    안녕하세요! 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를 획득하게 됩니다.





    음.. 너무 두서 없고 내용을 부실하게 적었네요.. 나중에 다시 정리를 하도록 하겠습니다.



    oauth인증 예제
    twit4cpp_0.4.2_sample.zip
    twit4cpp 소스twit4cpp_0.4.2_src.zip
Designed by Tistory.