Programming
No. | 681 |
Name. | swindler |
Subject. | OAuthConsumer를 이용한 xAuth |
Main Cate. | iOS |
Sub Cate. | |
Date. | 2010-08-16 11:49 |
Hit. | 3619 (211.36.27.8) |
File. | |
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 과정을 거치지 않아도 된다. [바로가기 링크] : http://coolx.net/cboard/develop/681 |
|
|
|
[Modify] [Delete] | [Reply] [List] |