因此,我从字面上复制了Google示例代码(https://developers.google.com/google-apps/calendar/quickstart/php)中的代码,并尽可能按照其说明操作,然后我的日历工作得很好。但我今天进来了,意识到它停止了工作,我无法弄清楚什么是错的。Google Calendar API getRefreshToken
我相信我的问题的根源是这一行:
$client->fetchAccessTokenWithRefreshToken($client->getRefreshToken());
,因为该行给了我这个错误
未捕获LogicException:刷新令牌必须传入或设置为setAccessToken的一部分
也有类似的问题(Get refresh token google api,Not receiving Google OAuth refresh token)但我似乎不能这样我的问题与他们的答案。
另一个说明; $client->getRefreshToken()
似乎在返回null
当我测试它,这就是为什么我认为$client->fetchAccessTokenWithRefreshToken($client->getRefreshToken());
失败。
所以这是一段代码直接从是有问题的例子
// Refresh the token if it's expired.
if ($client->isAccessTokenExpired()) {
$client->fetchAccessTokenWithRefreshToken($client->getRefreshToken());
file_put_contents($credentialsPath, json_encode($client->getAccessToken()));
}
这一段代码给我的错误,因为$client->getRefreshToken()
是null
,但我是我所需要的前提下,使用刷新令牌获取新令牌,如果没有刷新令牌,我不能这样做?
另外请注意,这已经被设定在通话开始时
$client->setAccessType('offline');
$client->setApprovalPrompt('force');
是的,我已经设置的标志,因为他们在这个例子中。而且我知道它应该被刷新,这就是线条评论为'刷新标记,如果它过期.'应该是做的,但我没有得到一个新的关键 –
我已经添加了一部分我的问题有希望进一步澄清 –