Почему я не могу отправить запрос на обновление токена через php? - PullRequest
0 голосов
/ 28 октября 2019
$ret = file_get_contents('https://oauth2.googleapis.com/token', false, stream_context_create([
    'http' => [
        'header'  => "Content-type: application/x-www-form-urlencoded\r\n",
        'method'  => 'POST',
        'protocol_version' => 1.1,
        'content' => http_build_query([
            'client_id' => $client_id,
            'client_secret' => $client_secret,
            'refresh_token' => $refresh_token,
            'grant_type' => $refresh_token
        ])
    ]
]));

После запуска скрипта я вижу ошибку 400 Bad Request. Что я сделал не так?

Ответы [ 2 ]

0 голосов
/ 28 октября 2019

Решение очень простое:

'content' => http_build_query([
      client_id' => $client_id,
     'client_secret' => $client_secret,
     'refresh_token' => $refresh_token,
     'grant_type' => 'refresh_token'
 ])
0 голосов
/ 28 октября 2019

От: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400

Код состояния ответа «Неверный запрос протокола передачи гипертекста (HTTP) 400» указывает, что сервер не может или не будет обрабатывать запрос из-за того, что воспринимается какошибка клиента (например, неправильный синтаксис запроса, неверное формирование сообщения запроса или вводящая в заблуждение маршрутизация запроса).

Это означает, что, скорее всего, что-то не так с параметрами, которые вы отправляете в запросе. Возможно, это не так, но попробуйте удалить \r\n в параметре заголовка, они мне кажутся странными.

$ret = file_get_contents('https://oauth2.googleapis.com/token', false, stream_context_create([
    'http' => [
        'header'  => "Content-type: application/x-www-form-urlencoded",
        'method'  => 'POST',
        'protocol_version' => 1.1,
        'content' => http_build_query([
            'client_id' => $client_id,
            'client_secret' => $client_secret,
            'refresh_token' => $refresh_token,
            'grant_type' => $refresh_token
        ])
    ]
]));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...