You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PayPal API获取Token正常但其他端点授权失败求助

问题:获取PayPal Access Token成功,但调用其他API端点时返回AUTHENTICATION_FAILURE

原本用JavaScript实现的PayPal API测试版本可正常运行,转为Curl在服务器端执行(用于隐藏凭证)后,能成功获取Access Token,但调用其他所有端点时均出现授权失败。

相关Curl命令及返回结果如下:

获取Token的命令及成功返回

curl https://api.sandbox.paypal.com/v1/oauth2/token \
 -H 'Accept: application/json' \
 -H 'Accept-Language: en_US' \
 -u 'XXXCLIENT_IDXXX':'XXXSECRETXXX' \
 -d grant_type=client_credentials

返回结果:

$VAR1 = {
          'app_id' => 'APP-80W284485P519543T',
          'scope' => 'https://uri.paypal.com/services/invoicing https://uri.paypal.com/services/disputes/read-buyer https://uri.paypal.com/services/payments/realtimepayment https://uri.paypal.com/services/disputes/update-seller https://uri.paypal.com/services/payments/payment/authcapture openid https://uri.paypal.com/services/disputes/read-seller https://uri.paypal.com/services/payments/refund https://api.paypal.com/v1/vault/credit-card https://api.paypal.com/v1/payments/.* https://uri.paypal.com/payments/payouts https://api.paypal.com/v1/vault/credit-card/.* https://uri.paypal.com/services/subscriptions https://uri.paypal.com/services/applications/webhooks',
          'expires_in' => 32329,
          'token_type' => 'Bearer',
          'nonce' => '2023-10-09T15:32:55Zhrzfg_lRlbaSCIW8HMlnO5rV1Yp_MQ4TKGag2B8zoBw',
          'access_token' => 'A21AAIZFjd0g3gpxiHckR1s60mg17K8GtlcvypfSxzKxWAFBFpeqM7t_8XdifcV1RRBwUvFeExF_OgKU2-PWxGS0oZeLDZ4-Q'
        };

调用发票端点的命令及错误返回

curl -v -X POST https://api.sandbox.paypal.com/v2/invoicing/invoices  \
-H 'Authorization : Bearer A21AAIZFjd0g3gpxiHckR1s60mg17K8GtlcvypfSxzKxWAFBFpeqM7t_8XdifcV1RRBwUvFeExF_OgKU2-PWxGS0oZeLDZ4-Q' \
-H 'Content-Type: application/json' \
-H 'Prefer: return=representation' \
-d '{
....
}'

返回结果:

$VAR1 = {
          'message' => 'Authentication failed due to invalid authentication credentials or a missing Authorization header.',
          'links' => [
                       {
                         'rel' => 'information_link',
                         'href' => 'https://developer.paypal.com/docs/api/overview/#error'
                       }
                     ],
          'name' => 'AUTHENTICATION_FAILURE'
        };

原因及解决方法

问题出在Authorization请求头的键名里多了一个空格:你写的是Authorization :(冒号前带空格),而正确的HTTP请求头格式要求键名不能包含空格,正确写法应为Authorization: Bearer ...(冒号前无空格,冒号后可带一个空格)。

服务器会严格匹配请求头的键名,带空格的Authorization 会被识别为一个完全无关的请求头,导致PayPal无法找到有效的授权信息,因此返回AUTHENTICATION_FAILURE。

修正后的Authorization头写法:

-H 'Authorization: Bearer A21AAIZFjd0g3gpxiHckR1s60mg17K8GtlcvypfSxzKxWAFBFpeqM7t_8XdifcV1RRBwUvFeExF_OgKU2-PWxGS0oZeLDZ4-Q'

额外排查点(若修正后仍报错)

  • 确认Access Token未过期:返回的expires_in为有效期秒数,确保调用其他端点时Token仍在有效期内。
  • 确认Token权限范围:返回的scope需包含目标端点所需权限(本次案例中https://uri.paypal.com/services/invoicing已包含,此点无问题)。
  • 检查Curl命令的其他细节:比如端点URL是否正确、请求体JSON格式是否合法。

内容的提问来源于stack exchange,提问作者Eddie Rowe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 03:23:19