1

サービス アカウントを使用して Google カレンダーからイベントを取得しようとしています。アクセストークンを受け取りました:

{"access_token":"ya29.AHES6ZR9o2-cut-Gg","expires_in":3600,"created":1366631471}

このトークンは期限切れになり、イベントを取得しようとするとエラーが発生します。

OAuth 2.0 アクセス トークンの有効期限が切れており、更新トークンを使用できません。自動承認された応答に対しては、更新トークンは返されません。

API ドキュメントで新しいアクセス トークンを取得する方法を見つけようとしましたが、適切なものが見つかりませんでした。ここで質問があります: アクセス トークンを更新するにはどうすればよいですか?

カレンダーにアクセスするために使用するコード:

session_start();

require_once '../../src/Google_Client.php';
require_once '../../src/contrib/Google_CalendarService.php';

define('SERVICE_ACCOUNT_NAME', 'numbers-and-letters@developer.gserviceaccount.com');
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('numbers-and-letters@group.calendar.google.com');
print_r($events);
} catch (Exception $e) echo $e->getMessage();

if ($client->getAccessToken()) {
  $_SESSION['token'] = $client->getAccessToken();
}
4

2 に答える 2

0

解決しました!リフレッシュ トークンを使用せずにアクセス トークンをリフレッシュするには、Google_Client クラスのメソッド revokeToken() を呼び出します

于 2013-04-24T02:35:27.797 に答える