因此,我從字面上複製了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');
是的,我已經設置的標誌,因爲他們在這個例子中。而且我知道它應該被刷新,這就是線條評論爲'刷新標記,如果它過期.'應該是做的,但我沒有得到一個新的關鍵 –
我已經添加了一部分我的問題有希望進一步澄清 –