mp-php/fuel-packages-gdataでFuelPHPでGoogle APIを扱う


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

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

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

Composerでインストール

# composer.json
    "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
// fuel/app/config/gdata.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 に指定します。

// fuel/app/config/config.php
    '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);
,