Google Oauth для обновления токена - invalid_grant - PullRequest
0 голосов
/ 17 марта 2019

Я пытаюсь получить токен обновления с помощью PHP и curl от Google.Я следовал этой документации

Следовал инструкциям, чтобы успешно получить "код", который мне нужен для получения токена обновления, поэтому я знаю, что он настроен правильно, и яиспользуя правильный редирект URI.Используя значения, которые Google дает мне, чтобы заполнить мой код curl, я создал следующий код:

$post = ["grant_type" => "authorization_code", "code" => "my recovered google code", "client_id" => "my oauth id", "client_secret" => "my client secret", "redirect_uri" => "my redirect id"];

$ch = curl_init('https://accounts.google.com/o/oauth2/token');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
$result = curl_exec($ch);

// close the connection, release resources used
curl_close($ch);

// log my returned tokens
file_put_contents('./tokenLogger-'.date("H.i.s").'.log', $result, FILE_APPEND);

Все, что я получаю, - это мой файл журнала:

{
  "error": "invalid_grant",
  "error_description": "Bad Request"
}

Я потратил впустую два дня и мог действительно использовать некоторое руководство.Я следую указаниям Google, и все же мне это не удается.Любое понимание было бы чрезвычайно полезно.Спасибо !!

1 Ответ

0 голосов
/ 18 марта 2019

Это расстраивало, но оказалось довольно прямым. При попытке получить токен обновления, вы должны получить «код» от Google, который вы используете для получения токена обновления. Этот «код» подходит только для однократного использования! Если вы пытаетесь использовать его и у вас есть ошибка в коде, вы должны сгенерировать новый «код», прежде чем сможете повторить попытку. Если это удастся или не удастся, вы получите только один выстрел. У меня сложилось впечатление, что я могу продолжать использовать его, пока это не удастся. Это не правильно.

...