7. OAuth인증 프로세스( 웹애플리케이션) OAuth.aspx 0. UI 페이지에서 “트위터 연결” 버튼을 클릭하면 “Oauth.aspx” 페이지가 호출된다. 1. 설정 파일에 ConsumerKey와 ConsumerSecret를 저장해놓은 정보를 읽어온다. string consumerKey = ConfigurationManager.AppSettings["ConsumerKey"]; string consumerSecret = ConfigurationManager.AppSettings["ConsumerSecret"]; 2. ConsumerKey , ConsumerSecret값을 이용해서 Request token을 트위터로부터 구한다. Twitterizer라이브러리의 GetRequestToken()을호출해서 Request token을 구한다. 메소드호출시, 트위터로부터호출받을 페이지 TokenData.aspx에 대한 주소( 콜백URL) 를 함께 넘긴다. OAuthTokenResponseort = OAuthUtility.GetRequestToken( consumerKey, consumerSecret, addr+ "TokenData.aspx?user=" + user + "&TweetUse=" + exist); GetRequestToken()은 내부적으로 https://api.twitter.com/oauth/request_token호출을 수행한다. 반환값OAuthTokenResponse의Token 속성을 통해서 Request token값을 구한다. 3. 2.단계에서 구한 Request token을 이용해서, 트위터를 향해서 엔드 유저가 ID/PWD를 입력할 수 있는 트위터로그인창을 띄울 수 있도록 한다. Uri uri = OAuthUtility.BuildAuthorizationUri(ort.Token); Response.Redirect(uri.AbsoluteUri); Twitterizer라이브러리의 BuildAuthorizationUrl() 메소드는https://twitter.com/oauth/Authorize에 대한 호출을 수행한다. 트위터로 넘겨지는 파라미터: ConsumerKey, ConsumerSecret, Reqeust token 임시키( Request token) 발급받기 사용자 계정 정보 입력받기 사용자 인증키( Access key ) 발급받기
8. OAuth인증 프로세스( 웹애플리케이션) https://twitter.com/oauth/authorize?oauth_token=yDwlnvhZqgJ69E3EUvxz3ZOpMlS0Ia2TGTZRna0 트위터는 이 요청을 받게 되면, 엔드 유저 로그인 창을 띄운다. 트위터 인증 수행 사용자가 입력한 트위터 계정 정보( id / pwd )를 이용해서 인증 처리를 수행한다. 컨슈머로부터건네받은컨슈머 정보( Consumerkey, ConsumerSecret), 임시 요청키(Request token) 를 이용해서 트위터내부적으로 엔드 유저에 대한 연결 정보를 업데이트 한다. 트위터는 인증을 수행하고 나면 컨슈머에서 보낸 콜백 페이지( TokenData.aspx )를 호출한다. 임시키( Request token) 발급받기 사용자 계정 정보 입력받기 사용자 인증키( Access key ) 발급받기
9. OAuth인증 프로세스( 웹애플리케이션) TokenData.aspx 트위터로부터건네받은 인자 조회 string requestToken = Request.QueryString["oauth_token"]; string accessVerifier = Request.QueryString["oauth_verifier"]; 2. 트위터로 다시 Access token을 조회한다. OAuthTokenResponseaccessTokenResponse = OAuthUtility.GetAccessToken(consumerKey, consumerSecret, requestToken, accessVerifier); 반환받은OAuthToekenResponse객체의 속성.Token, .TokenSecret을 통해서 Access token/ secret 값을 구할 수 있다. 임시키( Request token) 발급받기 사용자 계정 정보 입력받기 사용자 인증키( Access key ) 발급받기
10. 트위터 업데이트 트위터와 연결 설정 후 트위터의 오픈 API를 이용해서 글을 올리는 작업 1. DB에 저장한 사용자의 AccessToken,AccessTokenSecret를 가져온다. DataTabledtOauthInfo= _TweetMgmtBsl.SelectUserOAuthInfo(userId, serviceName); 2. Twitterizer의 토큰 객체 OAuthTokens생성 OAuthTokensauthToken = new OAuthTokens(); //DB값 조회 authToken.AccessToken = dtOauthInfo.Rows[0]["OAUTH_TOKEN"].ToString(); authToken.AccessTokenSecret = dtOauthInfo.Rows[0]["OAUTH_SECRET"].ToString(); //웹 애플리케이션 설정 파일 조회 authToken.ConsumerKey = ConfigurationManager.AppSettings["ConsumerKey"]; authToken.ConsumerSecret = ConfigurationManager.AppSettings["ConsumerSecret"]; 3. Twitterizer의 TwitterStatus.Update() 메소드를 호출해서 트위터에 새로운 글을 올린다. TwitterResponse<TwitterStatus> tss = TwitterStatus.Update(authToken, text); 임시키( Request token) 발급받기 사용자 계정 정보 입력받기 사용자 인증키( Access key ) 발급받기 트위터에 글쓰기