从paypal ios sdk获取访问令牌时无效的客户端凭据

时间:2015-07-14 09:39:14

标签: ios authentication paypal

我正在创建一个应用程序,我必须使用paypal付款,成功付款后我必须生成付款详细信息,因此我需要访问令牌。

我得到了如何获取访问令牌的方法,我试着投入。它和我成功使用客户端ID和客户端密钥获取该访问令牌。直到这个没有问题。

但是当我在我的代码中放置这些凭据(Client_ID和Client_Secret)时,它总是返回无效的客户端凭证。

NSURL *URL = [NSURL URLWithString:@"https://api.sandbox.paypal.com/v1/oauth2/token"];
// NSURLRequest *request = [NSURLRequest requestWithURL:URL
// cachePolicy:NSURLRequestUseProtocolCachePolicy
// timeoutInterval:30.0];

NSMutableURLRequest* request = [[NSMutableURLRequest alloc] initWithURL:URL];

NSString *client_id = @"xxxxxxxxxxxxxx";
NSString *client_secret = @"xxxxxxxxxxxxxx";

[request setHTTPMethod:@"POST"];

NSString *authStr = [NSString stringWithFormat:@"%@:%@", client_id, client_secret];
NSData *authData = [authStr dataUsingEncoding:NSASCIIStringEncoding];
NSString *authValue = [NSString stringWithFormat:@"Basic %@", [authData base64EncodingWithLineLength:80]];

[request setValue:authValue forHTTPHeaderField:@"Authorization"];


[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[request setValue:@"en_US" forHTTPHeaderField:@"Accept-Language"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];

NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"client_credentials",@"grant_type", nil];

NSData* jsonData = [NSJSONSerialization dataWithJSONObject:dict options:0 error:nil];
request.HTTPBody = jsonData;

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

以下是我在didFinishLoading

中打印的日志
2015-07-14 14:54:25.130 paypalNativeDemo[1478:61010] {"error":"invalid_client","error_description":"Invalid client credentials"}

2 个答案:

答案 0 :(得分:0)

通常,此错误是由于REST应用程序尚未获得批准。我建议您通过帐户中的号码与PayPal支持小组联系,并告知代理您正在呼叫以检查您的REST应用程序的状态。

答案 1 :(得分:0)

沙箱凭据与实时不同。如果您正在与沙盒交谈,请确保您正在使用沙箱client_id