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

PHP使用Envato OAuth令牌发起GET请求:Postman正常CURL返回未授权

问题分析与解决方案

我一眼就找到问题所在啦——你的CURL请求头格式写错了,这就是代码返回"Unauthorized"但Postman能成功的核心原因!

核心错误:请求头格式不符合CURL要求

CURLOPT_HTTPHEADER要求传入的是纯字符串数组,每个元素必须是"Header-Name: Value"的完整格式,但你现在用的是关联数组:

$headers = array(
    'Authorization' => 'Bearer '.$token,
);

这种格式会被CURL错误解析,导致Authorization头根本没正确发送给API,自然会被判定为未授权。

修正后的完整代码

把请求头改成字符串数组形式,同时补充一些实用的错误排查逻辑:

<?php
if(!isset($_GET['token'])){
    echo "<h2>!!! Oops:( </h2>";
    exit();
}
$token = $_GET['token'];
$apiUrl = 'https://api.envato.com/v3/market/buyer/purchases?page=1';
// 修正:改成标准的字符串数组请求头格式
$headers = array(
    'Authorization: Bearer '.$token,
    // 可选:Postman会自动带User-Agent,部分API要求这个头,建议加上
    'User-Agent: My-Envato-Client/1.0'
);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $apiUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
// 开启SSL校验,避免潜在的HTTPS请求问题
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);

$result = curl_exec($ch);

// 优先检查CURL本身的错误,而不是只看结果是否为空
if(curl_errno($ch)) {
    echo '<br>CURL Error: ' . curl_error($ch) . '<br>';
}else{
    print_r($result);
    echo "<br><br>";
    $json = json_decode($result, true);
}
// 记得关闭CURL资源,养成好习惯
curl_close($ch);
?>

额外排查建议

如果修正后还是有问题,可以检查这几点:

  • 确认$_GET['token']获取到的是完整、无截断的有效access token
  • 对比Postman的请求头列表,看看是否有其他API要求的必填头信息(比如Accept),把缺失的补到代码里
  • 验证你的token是否拥有访问/v3/market/buyer/purchases接口的权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:46:06