Получить токен обновления google api

Я не могу получить свой токен обновления с моим кодом. Я могу получить только свой доступ токен, тип токена и т. д., Я следил за некоторыми учебными пособиями, например, помещаю access_type = offline в свой URL-адрес входа:

echo "<a href='https://accounts.google.com/o/oauth2/auth?" 
    . "access_type=offline&client_id=123345555.apps.googleusercontent.com& "
    . "scope=https://www.googleapis.com/auth/calendar+https://www.googleapis.com/auth/plus.me&response_type=code& "
    . "redirect_uri=http://www.sample.com/sample.php&state=/profile'>Google</a>";

и мои поля для получения токена доступа:

$fields=array(
    'code'=>  urlencode($authcode),
    'client_id'=> urlencode($clientid),
    'client_secret'=> urlencode($clientsecret),
    'redirect_uri'=> urlencode($redirecturi),
    'grant_type'=> 'authorization_code',
);

, но я не могу получить refresh_token , только access_token , token_type , id_token и expires_in .

72
задан Ivan Aracki 17 May 2018 в 11:51
поделиться

1 ответ

Для тех, которые используют , Google API Client Library для PHP и запроса офлайнового доступа и маркеров обновления остерегается по состоянию на время этой записи, что документы показывают неправильные примеры.

в настоящее время это показывает:

$client = new Google_Client();
$client->setAuthConfig('client_secret.json');
$client->addScope(Google_Service_Drive::DRIVE_METADATA_READONLY);
$client->setRedirectUri('http://' . 

Для тех, которые используют , Google API Client Library для PHP и запроса офлайнового доступа и маркеров обновления остерегается по состоянию на время этой записи, что документы показывают неправильные примеры.

в настоящее время это показывает:

[110]

источник: https://developers.google.com/identity/protocols/OAuth2WebServer#offline

Все это работает отлично - кроме ОДНОЙ части

$client->setApprovalPrompt("consent");

После небольшого количества обоснования, что я изменил эту строку на следующее, и ВСЕ РАБОТАЛО

$client->setPrompt("consent");

, Это имеет смысл начиная с использования Запросов HTTP, это было изменено от [1 112] approval_prompt=force к [1 113] prompt=consent. Так изменяя метод установщика от [1 114] setApprovalPrompt к [1 115] setPrompt следует естественной конвенции - НО IT НЕ В ДОКУМЕНТАХ!!! То, что я нашел, по крайней мере.

SERVER['HTTP_HOST'] . '/oauth2callback.php'); // offline access will give you both an access and refresh token so that // your app can refresh the access token without user interaction. $client->setAccessType('offline'); // Using "consent" ensures that your application always receives a refresh token. // If you are not using offline access, you can omit this. $client->setApprovalPrompt("consent"); $client->setIncludeGrantedScopes(true); // incremental auth

источник: https://developers.google.com/identity/protocols/OAuth2WebServer#offline

Все это работает отлично - кроме ОДНОЙ части

$client->setApprovalPrompt("consent");

После небольшого количества обоснования, что я изменил эту строку на следующее, и ВСЕ РАБОТАЛО

$client->setPrompt("consent");

, Это имеет смысл начиная с использования Запросов HTTP, это было изменено от [1 112] approval_prompt=force к [1 113] prompt=consent. Так изменяя метод установщика от [1 114] setApprovalPrompt к [1 115] setPrompt следует естественной конвенции - НО IT НЕ В ДОКУМЕНТАХ!!! То, что я нашел, по крайней мере.

0
ответ дан 24 November 2019 в 12:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: