【问题标题】:GitHub API returning message requires authentication even though I am providing access token即使我提供访问令牌,GitHub API 返回消息也需要身份验证
【发布时间】:2019-02-23 22:07:11
【问题描述】:

我正在从 PHP 脚本调用 GitHub API https://api.github.com/user/emails。基本上我需要用于登录的 GitHub 帐户的 GitHub 电子邮件地址。

这是我从 API 收到的响应:

{ 
    "message": "Requires authentication", 
    "documentation_url": "https://developer.github.com/v3/users/emails/#list-email-addresses-for-a-user"
}

即使我传递带有授权标头的访问令牌,我仍然收到需要身份验证消息。

这是我的代码:

    $token = $_GET['token'];
    echo $token;

    $url = "https://api.github.com/user/emails";
    $auth = "Authorization: token ".$token;
    echo $auth;
    $accept = "Accept: application/vnd.github.v3+json";
    $useragent = "User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 YaBrowser/16.3.0.7146 Yowser/2.5 Safari/537.36";

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);

    curl_setopt($ch, CURLOPT_HTTPHEADER, array($auth));
    curl_setopt($ch, CURLOPT_HTTPHEADER, array($accept));
    curl_setopt($ch, CURLOPT_HTTPHEADER, array($useragent));

    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);

    $res = curl_exec($ch);
    echo ($res); 
    curl_close($ch);

知道我在这里做错了什么吗?对于获取与登录的 GitHub 帐户相关联的 GitHub 电子邮件地址,我愿意接受任何其他建议。

【问题讨论】:

    标签: php api curl github oauth


    【解决方案1】:

    CURLOPT_HTTPHEADER 多次调用curl_setopt() 将不起作用,因为它会覆盖之前为CURLOPT_HTTPHEADER 字段指定的值。

    您可以通过启用CURLOPT_VERBOSE 自行检查,之后您可以看到 cURL 在内部为您的请求做了什么。

    你必须指定一个你提供给CURLOPT_HTTPHEADER的数组:

    $headers = array(
        "Authorization: token ".$token,
        "Accept: application/vnd.github.v3+json",
        "User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 YaBrowser/16.3.0.7146 Yowser/2.5 Safari/537.36"
    );
    

    现在您可以使用curl_setopt() 设置CURLOPT_HTTPHEADER 以包含$headers 中指定的所有标头:

    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-06
      • 2018-12-21
      • 2017-10-18
      • 2020-05-24
      • 1970-01-01
      • 1970-01-01
      • 2020-01-24
      • 2020-07-30
      相关资源
      最近更新 更多