Soundcloud OAuth 请求 returns 始终无效的客户端
Soundcloud OAuth request returns always invalid client
这是我的 objective-c 从 SoundCloud 获取访问令牌的代码:
- (void) authoriseSoundcloud {
NSString *apiUrl = @"<a href="https://api.soundcloud.com/oauth2/token" rel="nofollow">https://api.soundcloud.com/oauth2/token</a>";
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];</p>
<pre><code>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 post 正文中使用这些参数的样本不多,我假设我的参数列表可能不正确。 Soundcloud 工程师有什么想法吗?
只是一个打字错误,只需在"client_secret=%@"和"grant_type"之间添加“&”,就像这样:
NSString * params = [NSString stringWithFormat:@"client_id=%@&client_secret=%@&grant_type=password&username=%@&password=%@",client,secretKey,fldUsername.text,fldPassword.text ];
像魅力一样工作:)
这是我的 objective-c 从 SoundCloud 获取访问令牌的代码:
- (void) authoriseSoundcloud {
NSString *apiUrl = @"<a href="https://api.soundcloud.com/oauth2/token" rel="nofollow">https://api.soundcloud.com/oauth2/token</a>";
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];</p>
<pre><code>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 post 正文中使用这些参数的样本不多,我假设我的参数列表可能不正确。 Soundcloud 工程师有什么想法吗?
只是一个打字错误,只需在"client_secret=%@"和"grant_type"之间添加“&”,就像这样:
NSString * params = [NSString stringWithFormat:@"client_id=%@&client_secret=%@&grant_type=password&username=%@&password=%@",client,secretKey,fldUsername.text,fldPassword.text ];
像魅力一样工作:)