FuelPHPアプリからGoogle Calendar連携をする必要があったのでパッケージを探したところ fuel-packages-gdata を見つけたので試してみました。

作成者の方が詳しく説明してくれています: FuelPHPのGdataパッケージを作りました。- madroom project

こちらの説明で十分ですが、作業手順をメモしておきます。

Composerでインストール

    "require": {
        "php": ">=5.3.3",
        "monolog/monolog": "1.5.*",
        "mp-php/fuel-packages-gdata": "dev-master",
        "fuelphp/upload": "2.0.1"
    },
$ php composer.phar update

設定ファイルを fuel/app/config ディレクトリにコピーして各値をセットします。

$ cp fuel/packages/gdata/config/gdata.php fuel/app/config/
<?php
return array(
	'application_name' => 'Google Calendar Test',
	'client_id'        => '11111.xxxyyyzzz.apps.googleusercontent.com',
	'client_secret'    => 'xxxyyyzzz',
	'redirect_uri'     => 'http://localhost/gcal-sample/callback',
	'api_key'          => '',
	'scopes'           => array(),
	'access_type'      => 'offline',
);

常に使う場合は、config.php の always_load に指定します。

	'always_load'  => array(
		'packages'  => array(
			'auth',
			'orm',
			'gdata',
		),
	),

常に使う訳ではない場合は必要箇所で

Package::load('gdata');

Gdata::forge()したオブジェクトのclientがGoogle Data APIクライアントのオブジェクトになります。

datetime="2014-02-27T02:55:56+00:00">$gdata = Gdata::forge(
		'Calendar',
		$instance_name = 'default',
		$config = array()
	);
$gdata->client->setAccessToken(xxxx);
$cal = new Google_CalendarService($gdata->client);
$calList = $cal->calendarList->listCalendarList();
echo json_encode($calList['items'])

最近、GData Clientが新しくなったので、対応後は

$gdata = Gdata::forge(
		'Calendar',
		$instance_name = 'default',
		$config = array()
	);
$gdata->client->setAccessToken(xxxx);
$cal = new Google_Service_Calendar($gdata->client);
$calList = $cal->calendarList->listCalendarList();
echo json_encode($calList->items);