2016-06-03 10 views
0

Hier ist mein Ziel-C-Code-Zugriffstoken von Soundcloud zu erhalten:Soundcloud OAuth Anfrage kehrt immer ungültig Client

- (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]; 

}

Allerdings bekomme ich immer das Ergebnis 401- {"error":"invalid_client"}.

Diese Client-ID funktioniert jedoch perfekt mit diesen Anfragen, die keine Autorisierung benötigen und ich habe mehrmals überprüft, dass meine Client-ID und mein Geheimnis korrekt sind.
Da es nicht viele Beispiele für iOS gibt, um diese Parameter in HTTP post body zu verwenden, gehe ich davon aus, dass meine Parameterliste möglicherweise falsch ist. Irgendwelche Ideen von Soundcloud-Ingenieuren?

Antwort

2

nur ein Tippfehler Fehler, fügen Sie einfach "&" zwischen "client_secret =% @" und "grant_type", wie folgt aus:

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

Arbeit wie ein Zauber :)

+0

Vielen Dank. Wie schließe ich die Frage? –

+0

Hallo, akzeptiere einfach meine Antwort als richtige Antwort auf deine Frage. Vielen Dank –