Как избежать ошибки 403 от Github API?

Я пытаюсь получить все измененные строки, которые пользователь сделал в своей учетной записи 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: e'
            ]
    ]
];
$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. При первом запуске скрипта сработали самые первые циклы, и у меня получается что-то вроде 195 за $totalLines. Но после просмотра моего локального сервера PHP я увидел 403 ошибки для других циклов.

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

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

Я хотел бы добавить, что этот скрипт очень долго выполняется...

user8049608 23.03.2019 15:25

Мне непонятно, отправляете ли вы заголовок авторизации с каждым запросом. Ответ HTTP 403 Forbidden предполагает, что вы пытаетесь получить доступ к частному репозиторию.

Brendan Forster 30.03.2019 19:19
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
2
551
0

Другие вопросы по теме