2014-04-04 4 views
0

빠른 질문이 있습니다.Bit.ly API 목표 C retrieve access_token

사용자가 사용자 이름 (이메일)과 비밀번호를 입력하고 bit.ly api에서 액세스 토큰을 받고 싶습니다.

는 지금까지 시도 :
NSString *authStr = [NSString stringWithFormat:@"%@:%@", @"username", @"password"]; 
NSData *authData = [authStr dataUsingEncoding:NSUTF8StringEncoding]; 
NSString *authValue = [NSString stringWithFormat:@"Basic %@", [authData base64Encoding]]; 
[request setValue:authValue forHTTPHeaderField:@"Authorization"]; 

그러나이 작동하지 않습니다. 내가 필요로 무엇

객관적 C에서 실행 컬이 명령을 얻는 것입니다 : 내가 게시 할 방법을 설정할 수 있습니다 알고

curl -u "username:password" -X POST "https://api-ssl.bitly.com/oauth/access_token" 

하지만 사용자 이름 설정하는 방법을 잘 모르겠습니다 : 비밀번호 : |

은 또한 TI는 클라이언트 ID와 클라이언트 비밀번호의 입력을 설정하는 방법 그러나 나는 아직도 모르는
curl -u "CLIENT_ID:CLIENT_SECRET" -d "grant_type=password" -d "username=USERNAME" \ 
-d "password=PASSWORD" https://api-ssl.bitly.com/oauth/access_token 

를 사용했습니다.

요청에 해당 정보를 어떻게 설정할 수 있는지에 대한 도움이 필요합니다. 잭

답변

2

인정 하듯이, AFNetworking 같은 일이있는 NSURLConnection와 협력해야합니까

등 좀 더 쉽게,하지만 당신은 처음부터이 일을하는 경우, 당신은 가까이있어.

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"https://api-ssl.bitly.com/oauth/access_token"]]; 

자원 소유자 자격 증명 부여의 끝점입니다. 그러면 나머지 API에 액세스하는 데 필요한 access_token이 생깁니다. 기본 클라이언트 ID :

흐름의 까다로운 부분은이에 대한 권한 부여 필드를 설정합니다

NSString *authString = [NSString stringWithFormat:@"%@:%@", @"<YOUR CLIENT ID>", @"<YOUR CLIENT SECRET>"]; 
NSData *authData = [authString dataUsingEncoding:NSUTF8StringEncoding]; 
NSString *base64 = [authData base64EncodedStringWithOptions:0]; 
NSString *authHeader = [NSString stringWithFormat:@"Basic %@", base64]; 
[request setValue:authHeader forHTTPHeaderField:@"Authorization"]; 

은 "인증"헤더입니다 제대로 거기에서

을 64'ed되는 하단 clientSecret 당신이 설정해야 요청

NSString *postBody = [NSString stringWithFormat:@"grant_type=password&username=%@&password=%@", @"<USERNAME>", @"<PASSWORD>"]; 
[request setHTTPBody:[postBody dataUsingEncoding:NSUTF8StringEncoding]]; 

에 대한 신체는

POST의 요청을 말해3210
[request setHTTPMethod:@"POST"]; 

는 그런 다음있는 NSURLConnection를 열고 3 개 중요한 위임 방법

NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self]; 
[connection start]; 

구현하려는 것입니다 관찰 :

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData*)data 
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error 
- (void)connectionDidFinishLoading:(NSURLConnection *)connection 

자료 : 나는 아이폰 애플 리케이션을위한 Bitly 물품. 희망이 도움이됩니다. API 또는 위의 예에 대해 질문이 있으면 알려주십시오.

+0

좋은 아이디어! 나는 사용자 자격 증명을 사용하여 당신과 가까운 곳에서 다른 방식으로 작업하게했습니다.) 이제 잘 작동합니다. – xCoder