我正在使用带有 PHP 的 Google Sheets API,并遵循可以在此处找到的快速入门指南https://developers.google.com/sheets/quickstart/php https://developers.google.com/sheets/quickstart/php
当我正确授权并将以下 json 文件存储在指定路径中时
{
"access_token": "xxxxxxx",
"token_type": "Bearer",
"expires_in": 3600,
"refresh_token": "xxxxxx",
"created": 1472731452
}
过期后,我的代码中会触发以下内容
if ($client->isAccessTokenExpired()) {
$client->fetchAccessTokenWithRefreshToken(
$client->getRefreshToken()
);
$this->filesystem
->put(
self::CREDENTIALS,
json_encode($client->getAccessToken())
);
}
现在我的问题是,当该代码被触发时,它会将我的文件更新为如下所示。
{
"access_token": "xxxxxxx",
"token_type": "Bearer",
"expires_in": 3600,
"created": 1472731452
}
如您所见,不再有刷新令牌。当此令牌过期时,我开始收到以下错误
[LogicException]
refresh token must be passed in or set as part of setAccessToken
这是完全可以理解的,因为我不再有刷新令牌了。
我的问题是为什么刷新令牌被删除?我被称为与快速入门指南中的方法相同的方法https://developers.google.com/sheets/quickstart/php https://developers.google.com/sheets/quickstart/php
我在指南中专门谈论这部分
// Refresh the token if it's expired.
if ($client->isAccessTokenExpired()) {
$client->fetchAccessTokenWithRefreshToken($client->getRefreshToken());
file_put_contents($credentialsPath, json_encode($client->getAccessToken()));
}