我試圖使用服務帳戶從我的Google日曆中獲取事件。我收到的訪問令牌:Google Calendar API。服務帳戶。訪問令牌已過期。無需RT即刷新AT
{"access_token":"ya29.AHES6ZR9o2-cut-Gg","expires_in":3600,"created":1366631471}
現在這個令牌過期,當我試圖讓事件,我得到一個錯誤:
The OAuth 2.0 access token has expired, and a refresh token is not available. Refresh tokens are not returned for responses that were auto-approved.
我試圖找到辦法讓API新的訪問令牌文檔,但沒有找到合適的東西。現在我有一個問題:我如何刷新我的訪問令牌?
代碼,我用它來訪問日曆:
session_start();
require_once '../../src/Google_Client.php';
require_once '../../src/contrib/Google_CalendarService.php';
define('SERVICE_ACCOUNT_NAME', '[email protected]');
define('CLIENT_ID', 'numbers-and-letters.apps.googleusercontent.com');
define('KEY_FILE', '../../key.p12');
$client = new Google_Client();
$client->setApplicationName("app name");
$client->setUseObjects(true);
$client->setClientID(CLIENT_ID);
$key = file_get_contents(KEY_FILE);
if (isset($_SESSION['token']))
{
$client->setAccessToken($_SESSION['token']);
$client->setaccessType('offline');
}
else
{
$client->setAssertionCredentials(new Google_AssertionCredentials(
SERVICE_ACCOUNT_NAME,
array('https://www.googleapis.com/auth/calendar.readonly'),
$key
));
}
try
{
$cal = new Google_CalendarService($client);
$events = $cal->events->listEvents('[email protected]');
print_r($events);
} catch (Exception $e) echo $e->getMessage();
if ($client->getAccessToken()) {
$_SESSION['token'] = $client->getAccessToken();
}
嗨斯坦。歡迎來到SO!您不應將問題的答案添加爲問題的附錄,而應提交您自己的問題的答案並接受該答案。回答你自己的問題完全沒問題。此外,這個問題將不再出現在「無答案的問題」部分,這有助於過濾這些問題。當然,通過這種方式,答案對於和你有同樣問題的未來用戶更爲明顯。喔! – blubb 2013-04-23 08:02:47
好!感謝您的澄清 – stan 2013-04-23 08:33:56