2016-06-03 3 views
0

여기에 사운드 클라우드에서 액세스 토큰을 얻기 위해 내 목표 - C 코드는 다음과 같습니다사운드 클라우드의 OAuth 요청을 반환 항상 유효하지 않은 클라이언트

- (void) authoriseSoundcloud { NSString *apiUrl = @" https://api.soundcloud.com/oauth2/token "; NSMutableURLRequest * urlRequest = [NSMutableURLRequest requestWithURL:[ NSURL URLWithString:apiUrl]]; NSString * params = [NSString stringWithFormat:@"client_id=%@&client_secret=%@grant_type=password&username=%@&password=%@",client,secretKey,fldUsername.text,fldPassword.text ]; [urlRequest setHTTPMethod:@"POST"]; [urlRequest setHTTPBody:[params dataUsingEncoding:NSUTF8StringEncoding]]; NSURLSession *defaultSession = [NSURLSession sharedSession];

NSURLSessionDataTask * dataTask =[defaultSession dataTaskWithRequest:urlRequest 
                completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { 
                 NSLog(@"Response:%@ %@\n", response, error); 
                 if(error == nil) 
                 { 
                  NSString * text = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding]; 
                  NSLog(@"Data = %@",text); 
                 } 

                }]; 
[dataTask resume]; 

}

그러나, 나는 항상 결과 401 {"error":"invalid_client"}를 얻을.

그러나 클라이언트 ID는 요청이 완벽하게 작동하므로 인증이 필요하지 않으며 여러 번 확인한 후 내 고객 ID와 비밀번호가 정확합니다.
iOS가 HTTP 게시 본문에서 이러한 매개 변수를 사용하는 데 필요한 샘플이 많지 않으므로 매개 변수 목록이 잘못되었을 수도 있습니다. Soundcloud 엔지니어의 아이디어가 있습니까?

답변

2

그냥 오타 실수는 단순히 같이, "client_secret = % @"와 "grant_type"사이 "&"을 추가

NSString * params = [NSString stringWithFormat:@"client_id=%@&client_secret=%@&grant_type=password&username=%@&password=%@",client,secretKey,fldUsername.text,fldPassword.text ]; 

일을 매력 :)처럼

+0

덕분에 많이. 질문을 어떻게 닫을 수 있습니까? –

+0

안녕하세요, 귀하의 질문에 대한 정답으로 제 답변을 수락하십시오. 감사 –

관련 문제