Как избежать ошибки 403 от Github API? - PullRequest
2 голосов
/ 23 марта 2019

Я пытаюсь получить все измененные строки, которые пользователь сделал на своей учетной записи Github.Я сделал небольшой PHP-скрипт с некоторыми циклами foreach ().Проблема в том, что я каждый раз получаю ошибку 403 от Github API.

Я уже пытался изменить заголовок.Я делал это:

$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"];
    }
}

Ожидаемые результаты - это все статистические данные из API Github Commits.Когда я впервые запустил скрипт, сработали самые первые циклы, и я получил что-то вроде 195 для $totalLines.Но после просмотра моего локального PHP-сервера я обнаружил 403 ошибки для других циклов.

Кто-нибудь знает, как я могу это исправить, чтобы я мог получать все измененные строки из определенной учетной записи Github?

Большое спасибо за ваше время, Gabyfle.

...