我有一个连接到PayPal Connect的应用程序。在PayPal Connect按钮时,请单击我被带到PayPal网站,并且我确实在身份验证后会收到他们发送的代码。但是随后我无法将邮政请求发送给使用授权_code的PayPal来要求用户信息我收到的错误。我遇到了这个错误:身份验证由于无效的身份验证凭证或丢失而失败。而且我很确定我的凭证很好。我想念什么吗?
这是贝宝给我的:
curl -X POST https://api.sandbox.paypal.com/v1/oauth2/token
-H 'Authorization: Basic {Your Base64-encoded ClientID:Secret}='
-d 'grant_type=refresh_token&refresh_token={refresh token}'
我正在使用guzzle发送发布请求。请参阅下面的代码
$client = new GuzzleHttpClient();
$headers = [
'Authorization' => 'Basic clientID:clientSecret'
];
$response = $client->request('POST',
'https://api.sandbox.paypal.com/v1/oauth2/token',
[
'grant_type ' => 'authorization_code',
'code' => $data['code']
],
$headers);
查看PayPal API文档,似乎您的授权标题不正确。
授权请求标题: BASE 64编码的客户ID和秘密凭证,由 冒号 (:(。使用合作伙伴的凭据。
您可以使用php的base64_encode((函数来执行此操作。
$client = new GuzzleHttpClient();
$authorizationString = base64_encode($clientId . ':' . $clientSecret);
$client->request(
'POST',
'https://api.sandbox.paypal.com/v1/oauth2/token',
[
'headers' => [
'Authorization' => 'Basic ' . $authorizationString
],
'form_params' => [
'grant_type ' => 'authorization_code',
'code' => $data['code']
]
]
);