Я не могу получить свой токен обновления с моим кодом. Я могу получить только свой доступ токен, тип токена и т. д.,
Я следил за некоторыми учебными пособиями, например, помещаю 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 .
Для тех, которые используют , 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 НЕ В ДОКУМЕНТАХ!!! То, что я нашел, по крайней мере.