eBay API授权码无法兑换访问令牌问题求助
解决eBay OAuth授权码兑换访问令牌的
server_error问题 核心排查方向及修复方案
1. 确认授权码的有效性
- 授权码仅可使用一次,若之前尝试过兑换,必须重新发起授权流程获取新的授权码。
- eBay授权码有效期为5分钟,超时后直接失效,需重新获取。
2. 验证Basic Auth凭证准确性
Authorization: Basic后的字符串是**应用ID(Client ID)+ 冒号 + 应用密钥(Client Secret)**拼接后Base64编码的结果。- 重新编码验证:手动拼接
ClientID:ClientSecret后做Base64编码,替换当前请求头中的对应内容,确保无拼写错误、多余空格或编码失误。
3. 核对redirect_uri的一致性
- 请求中的
redirect_uri必须与eBay开发者后台应用OAuth设置里的配置完全一致,包括大小写、特殊字符、路径(如有)。 - 你当前请求的
redirect_uri为Muhammad_Tayyab-Muhammad-OTIFTE-epcga,务必去后台确认该值完全匹配。
4. 移除不必要的请求头
- 令牌兑换请求无需携带
Cookie头,直接删除该字段,避免干扰服务器处理逻辑。
5. 修正请求体编码格式
- 建议用数组形式传递
POSTFIELDS参数,让curl自动处理application/x-www-form-urlencoded编码,避免手动URL编码导致的错误。
修正后的示例代码
$curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => 'https://api.sandbox.ebay.com/identity/v1/oauth2/token', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'POST', // 用数组传参,让curl自动处理编码 CURLOPT_POSTFIELDS => array( 'grant_type' => 'authorization_code', 'code' => 'v^1.1#i^1#p^3#f^0#I^3#r^1#t^Ul41XzM6RURBMkI0QkQ3RDZGNzVBNzY3RTRFQjUwODk3REE3QzVfMF8xI0VeMTI4NA==', 'redirect_uri' => 'Muhammad_Tayyab-Muhammad-OTIFTE-epcga' ), CURLOPT_HTTPHEADER => array( 'Content-Type: application/x-www-form-urlencoded', 'Authorization: Basic TXVoYW1tYWQtT1RJRlRFU1QtU0JYLWNhYzMyODgwMi02ODMwYjc1YzpTQlgtYWMzMjg4MDI1Yjk1LTdjOGQtNDgyMC1iMjQ1LTlmNWQ=' ), )); $response = curl_exec($curl); // 添加curl错误排查,方便定位问题 if(curl_errno($curl)) { echo 'CURL Error: ' . curl_error($curl); } curl_close($curl); var_dump($response);
关于eBay官方Postman集合
可手动创建符合要求的Postman请求:
- 新建POST请求,URL填写
sandbox环境的令牌接口地址 - 请求头添加
Content-Type: application/x-www-form-urlencoded和正确的Authorization: Basic ...凭证 - 请求体选择
x-www-form-urlencoded格式,填入grant_type、code、redirect_uri三个参数 - 发送请求即可完成测试
内容的提问来源于stack exchange,提问作者Tayyab
相关产品推荐
相关产品推荐

