2016-11-07 161 views
1

我正在嘗試使用Google API(PHP)在系統日曆和用戶的Google日曆之間執行每日同步。我希望系統用戶能夠在系統內設置對其日曆的訪問權限,然後系統可以通過cron作業每天同步日曆。使用Google API for Google Calendar v3刷新令牌

我設法讓整個過程工作,從授權訪問到同步日曆,但我陷入了令牌到期時間。

我認爲它在v3中的工作方式是舊的令牌將充當刷新令牌。所以,一旦用戶提供了授權,我只需要將舊的令牌傳遞給Google,並允許我運行同步。

這似乎工作,只要我在初始令牌的1小時到期時間內。一個小時過去了,它就停止工作,我需要讓用戶再次授權訪問。

有沒有辦法讓用戶授權訪問一次,然後每天同步一次日曆,而無需用戶再次授權訪問?

謝謝!

回答

1

那麼,在您授權Google的過程中,您將收到一個令牌,該令牌將在3600秒或一小時內過期,並且過期正常。所以你需要使用刷新令牌來獲得新的工作令牌。

這裏有您需要的步驟:

$token = $client->getAccessToken(); 
$authObj = json_decode($token); 
if(isset($authObj->refresh_token)) { 
save_refresh_token($authObj->refresh_token); 
} 

保存此refresh_token是很重要的,那麼你就可以

$client->refreshToken($your_saved_refresh_token); 

更新它,然後設置新的訪問令牌會議:

$_SESSION['access_token'] = $client->getAccessToken(); 

欲瞭解更多信息,請檢查這個SO question

+0

謝謝,我只是重新檢查一切,發現刷新令牌只出現在第一次獲得訪問權限。謝謝! –