PayPal沙盒环境身份验证失败

6

在尝试使用Paypal沙盒API时,我遇到了一个问题。我创建了两个沙盒账户(即facilitator和buyer),并创建了我的应用程序以获取凭证。

然后,我使用Paypal提供的curl示例来获取令牌:

curl -v https://api.sandbox.paypal.com/v1/oauth2/token \
   -H "Accept: application/json" \
   -H "Accept-Language: en_US" \
   -u "my-client-id:my-secret" \
   -d "grant_type=client_credentials"

我收到了一个带有“access_token”的200响应。

然后,我使用这个访问令牌来获取另一个资源,例如:

curl -v -X GET https://api.sandbox.paypal.com/v1/invoicing/invoices?page=3&page_size=4&total_count_required=true \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer the-token-received-above"

然后,我收到了一个401错误: { "name":"AUTHENTICATION_FAILURE", "message":"由于无效的身份验证凭据或缺少授权标头而导致身份验证失败。", "links":[{ "href":"https://developer.paypal.com/docs/api/overview/#error", "rel":"information_link" }] }
我不明白我做错了什么,因为我已经按照Paypal文档中描述的每个步骤进行了操作(至少我认为我是这样做的...可能不是)。
谢谢您的帮助。

当我按照相同的PayPal说明进行操作时,我会遇到完全相同的错误。 - henrywright
2个回答

2

获取 access_token 后,请尝试以下操作

 try {
        $params = array('access_token' => $jsonResponse->access_token);
        $userInfo = OpenIdUserinfo::getUserinfo($params, $this->_api_context);
    } catch (Exception $ex) {
        ResultPrinter::printError("User Information", "User Info", null, $params, $ex);
        exit(1);
    }

     ResultPrinter::printResult("User Information", "User Info", $userInfo->getUserId(), $params, $userInfo);

不要忘记添加

use PayPal\Api\OpenIdTokeninfo; use PayPal\Api\OpenIdUserinfo; 这对我有用。


1
curl -v -X GET "https://api.sandbox.paypal.com/v1/invoicing/invoices?page=3&page_size=4&total_count_required=true" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer the-token-received-above"

我曾经遇到过完全相同的问题,但不知道我的curl出了什么问题。对我来说,问题在于我忘记在授权部分中加入“Bearer”。

针对这个问题,您需要使用引号将URL包裹起来。


谢谢。我也是...忘记在授权中加入“Bearer [token]”。 - JohnPete22

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接