如何避免从Github API获得403错误?

时间:2019-03-23 13:37:52

标签: php github-api http-status-code-403

我正在尝试获取用户在其Github帐户上所做的所有修改行。我做了一些PHP脚本,带有一些foreach()循环。问题是我每次从Github API收到403错误。

我已经尝试过更改标题。我正在这样做:

$get_options = array('http' => array('user_agent' => 'Dev-Purpose'));
$context  = stream_context_create($options);
$jsonurl = "https://api.github.com/users/" . $github_user . "/repos";
$json = file_get_contents($jsonurl, false, $context);

所以我改为:

$get_options  = [
    'http' => [
            'method' => 'GET',
            'header' => [
                    'User-Agent: Gabyfle'
            ]
    ]
];
$context  = stream_context_create($get_options);

$jsonurl = "https://api.github.com/users/" . $github_user . "/repos";
$json = file_get_contents($jsonurl, false, $context);

但是它不能解决问题。我仍然收到此403错误。

我这样做是为了从Github帐户获取所有修改的行:

foreach ($repositeries as $id => $value) {
    $repo_name = $value["name"];
    $jsonurl = "https://api.github.com/repos/" . $github_user . "/" . $repo_name . "/commits";    
    $json = file_get_contents($jsonurl, false, $context);
    $commits = json_decode($json, true);

    foreach ($commits as $id => $value) {
        $sha = $value["sha"];
        $jsonurl = "https://api.github.com/repos/" . $github_user . "/" . $repo_name . "/commits/" . $sha;
        $json = file_get_contents($jsonurl, false, $context);
        $datas = json_decode($json, true);
        /* Adding lines to vars */
        $totalLines = $totalLines + $datas["stats"]["total"];
        $addedLines = $addedLines + $datas["stats"]["additions"];
        $deletedLines = $deletedLines + $datas["stats"]["deletions"];
    }
}

预期结果是Github Commits API的所有统计信息。 第一次启动脚本时,第一个循环起作用了,$totalLines的输出为195。但是在查看我的PHP本地服务器后,我发现其他循环出现403错误。

任何人都知道如何解决此问题,因此我可以从某个Github帐户获得所有修改的行吗?

非常感谢您的宝贵时间, 加比夫。

0 个答案:

没有答案