본문 바로가기
프로그래밍/iOS

OAuthConsumer를 이용한 xAuth

by 백룡화검 2012. 2. 29.
출처: http://dreamofblue.tistory.com/tag/OAConsumer
OAuthConsumer 는  Objective-C로 구현된 OAuth 라이브러리이다.
이 라이브러리는 OAuth에 필요한 여러 모듈들을 포함하고 있으며 이를 이용하여 xAuth 인증도 가능하다.

인증 방법은 아래와 같다.


1. OAConsumer 에 부여받은 Consumer Key와 Secret를 입력한다.
    Twitter에서 Consumer Key와 Secret을 받기 위해서는 "http://dev.twitter.com/apps/new"에 접속하여 등록하고, Foursquare에서 받기 위해서는 "http://foursquare.com/oauth/"에 접속해서 등록한다.

OAConsumer *consumer = [OAConsumer alloc] initWithKey:consumerKey String secret:consumer Secret];



2. 입력한 값은 OAMutableURLRequest에 입력한다. 
    Twitter의 경우에는 URL이 "https://api.twitter.com/oauth/access_token"가 되며, Foursquare의 경우에는 "http://foursquare.com/oauth/access_token"가 된다.

OAMutableURLRequest *request = [[OAMutableURLRequest alloc] initWithURL:URL consumer:consumer token:nil realm:nil signatureProvider:nil];



3. request HTTP Method를 비롯해 파라미터를 입력한다. Twitter, Foursquare 동일 파라미터이다. 하지만 Twitter는 xAuth 허가를 따로 받아야 한다.

[request setHTTPMethod:@"POST"];
[request setParameters:[NSArray arrayWithObjects:
            [OARequestParameter requestParameterWithName:@"x_auth_mode" value:@"client_auth"],                         [OARequestParameter requestParameterWithName:@"x_auth_username" value:@"username"],    
            [OARequestParameter requestParameterWithName:@"x_auth_password" value:@"password"], nil]];



4. 준비는 모두 끝났다. 이제 connection을 할 순서이다. connection은 "OADataFetcher"를 이용한다.

OADataFetcher *dataFetcher = [[OADataFetcher alloc] init];
[dataFetcher fetchDataWithRequest:request delegate:self           
                      didFinishSelector:@selector(setAccessToken:withData:)
                      didFailSelector:@selector(
accessTokenTicket:didFailWithError:)];


5. OADataFetcher는 NSURLConnection과 유사한 클래스이며, didFinishSelector와 didFailSelector로 결과 여부에 따라 selector를 선언해준다.


6. 정확한 Consumer Key, Secret와 username, password를 입력하여 전송했다면, dataFetcher에서 NSData 형식의 Token을 보내준다. 형식은 "oauth_token=xxxxx&oauth_token_secret=xxxxx" 보내준다. 여기서 받은 token을 이용하여 다른 API에도 사용자 인증을 받은채로 접근이 가능하며, 이를 앱에 등록하여 놓으면 따로 Login 과정을 거치지 않아도 된다.

'프로그래밍 > iOS' 카테고리의 다른 글

Creating an iPad flip-clock with Core Animation  (0) 2012.03.06
iPhone 에서 OAuth 라이브러리 사용하기  (0) 2012.02.29
localize  (0) 2012.02.17
Advance Localization in ios apps  (0) 2012.02.17
로컬라이징  (0) 2012.02.17