Google API Client “刷新令牌必须作为 setAccessToken 的一部分传入或设置”
2022-08-30 21:51:23
我目前面临一个非常奇怪的问题,事实上,我一直在遵循Google API文档中的相同指南(https://developers.google.com/google-apps/calendar/quickstart/php)。我尝试了两次,第一次它像一个超级按钮一样工作,但在访问令牌过期后,Google API Doc直接提供的脚本无法刷新它。
TL;DR
下面是错误消息:
sam@ssh:~$ php www/path/to/app/public/quickstart.php
Fatal error: Uncaught exception 'LogicException' with message 'refresh token must be passed in or set as part of setAccessToken' in /home/pueblo/www/path/to/app/vendor/google/apiclient/src/Google/Client.php:258
Stack trace:
#0 /home/pueblo/www/path/to/app/public/quickstart.php(55): Google_Client->fetchAccessTokenWithRefreshToken(NULL)
#1 /home/pueblo/www/path/to/app/public/quickstart.php(76): getClient()
#2 {main}
thrown in /home/pueblo/www/path/to/app/vendor/google/apiclient/src/Google/Client.php on line 258
以下是我修改的谷歌的php脚本的一部分:
require_once __DIR__ . '/../vendor/autoload.php';
// I don't want the creds to be in my home folder, I prefer them in the app's root
define('APPLICATION_NAME', 'LRS API Calendar');
define('CREDENTIALS_PATH', __DIR__ . '/../.credentials/calendar-php-quickstart.json');
define('CLIENT_SECRET_PATH', __DIR__ . '/../client_secret.json');
我还修改了,这样我就可以在不修改太多代码的情况下“禁用”它:expandHomeDirectory
function expandHomeDirectory($path) {
$homeDirectory = getenv('HOME');
if (empty($homeDirectory)) {
$homeDirectory = getenv('HOMEDRIVE') . getenv('HOMEPATH');
}
return $path;
// return str_replace('~', realpath($homeDirectory), $path);
}
因此,为了检查我是否错了或者Google是否错了,我做了一个实验:昨天晚上我从ssh启动快速入门脚本来检查它是否有效,并且确实如此,所以我决定今天早上检查它是否仍然像我睡觉前一样工作,而不是,所以我认为Google有问题。quickstart.php
我希望有人可以帮助我,我已经检查了有关该主题的所有其他帖子,但它们都过时了。