最初に行う必要があるのは、アクセス トークンの取得です。これには人間が必要です。Google APIs PHP Clientを使用していると仮定すると、このスクリプトで実行できます (コマンド ラインから実行)。
注: 以下のスニペットは、インストール済みアプリケーションのクライアント ID で機能します。Google API Access コンソールで、このタイプのクライアント ID を必ず作成してください。
require_once '../../src/apiClient.php';
defined('STDIN') or define('STDIN', fopen('php://stdin', 'r'));
$client = new apiClient();
// Visit https://code.google.com/apis/console to create your client id and cient secret
$client->setClientId('INSERT_CLIENT_ID');
$client->setClientSecret('INSERT_CLIENT_SECRET');
$client->setRedirectUri('urn:ietf:wg:oauth:2.0:oob');
$client->setScopes(array(
'https://www.googleapis.com/auth/calendar',
'https://www.googleapis.com/auth/calendar.readonly',
));
$authUrl = $client->createAuthUrl();
print "Please visit:\n$authUrl\n\n";
print "Please enter the auth code:\n";
$authCode = trim(fgets(STDIN));
$_GET['code'] = $authCode;
$token = $client->authenticate();
var_dump($token);
これにより、accessToken と refreshToken を含む json でエンコードされた文字列が得られます。accessToken は 1 時間後に期限切れになりますが、心配する必要はありません。refreshToken は (アプリケーションをアンインストールしない限り) 期限切れになることはなく、新しい refreshToken を取得するために使用できます。クライアント ライブラリがこの部分を処理します。
次に、完全な json 文字列トークンを保存します ( access_token プロパティだけでなく、安全な場所に保存し、他のユーザーが読み取れないようにします。アプリは$client->setAccessToken($token)
、安全な場所から $token が検索された場所を呼び出すことができます (ここでも$token
、そのaccess_token
プロパティに限定されない、完全な json エンコードされた文字列)。
これで、 Calendar APIに対して認証済みのリクエストを行うことができます。
require_once '../../src/apiClient.php';
require_once '../../src/contrib/apiCalendarService.php';
session_start();
$client = new apiClient();
$client->setApplicationName("Google Calendar PHP Sample Application");
$cal = new apiCalendarService($client);
$client->setAccessToken($tokenFromSafePlace);
$calList = $cal->calendarList->listCalendarList();
print "<h1>Calendar List</h1><pre>" . print_r($calList, true) . "</pre>";