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

PHP+CURL实现Connect with PayPal获取用户信息遇资源不存在错误求助

解决PayPal OAuth2获取用户信息时的RESOURCE_NOT_FOUND问题

嘿,我看了你的代码,找到了几个导致你拿到RESOURCE_NOT_FOUND错误的关键问题,咱们一步步修正:

问题1:错误的API端点URL

你当前调用用户信息的URL多了个不必要的斜杠:

curl_setopt($ch, CURLOPT_URL, 'https://api.paypal.com/v1/oauth2/userinfo/?schema=paypalv1.1');

正确的URL应该去掉路径末尾的斜杠,改成:

curl_setopt($ch, CURLOPT_URL, 'https://api.paypal.com/v1/oauth2/userinfo?schema=paypalv1.1');

问题2:请求方法错误

获取用户信息是GET请求,但你代码里一直沿用之前的POST配置,需要把POST选项关闭:

curl_setopt($ch, CURLOPT_POST, false);
// 或者显式设置为GET请求
// curl_setopt($ch, CURLOPT_HTTPGET, true);

问题3:Access Token传递方式错误

PayPal的OAuth2接口要求把access token放在Authorization请求头里,格式为Bearer {你的access_token},而不是作为POST字段传递。你需要添加这个头:

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Authorization: Bearer ' . $access_token
));

同时要移除原来传递access token的CURLOPT_POSTFIELDS配置,因为GET请求不需要POST参数。

修改后的完整用户信息请求代码块

把你原来获取用户信息的那段代码替换成下面的内容:

// 切换到用户信息API的正确URL
curl_setopt($ch, CURLOPT_URL, 'https://api.paypal.com/v1/oauth2/userinfo?schema=paypalv1.1');
// 改为GET请求
curl_setopt($ch, CURLOPT_POST, false);
// 设置Authorization头
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Authorization: Bearer ' . $access_token
));
// 清空之前的POST字段(因为GET不需要)
curl_setopt($ch, CURLOPT_POSTFIELDS, null);

$res_userinfo = curl_exec($ch);
if(empty($res_userinfo)) { 
    // 处理错误
} else { 
    $json_userinfo = json_decode($res_userinfo); 
    print_r($json_userinfo); 
}

额外提醒

别忘了确认你在引导用户授权时,请求的scope参数包含了email(比如openid email profile)——即使你的应用有获取邮箱的权限,授权阶段没请求对应的scope,依然拿不到用户邮箱数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 17:02:32