November 6, 2012

FuelPHPのGdataパッケージを作りました。

GitHubにUPしてあります。
(README等は、後日書く予定です。)

やっていることは簡単で、google-api-php-clientをFuelPHP的にforgeするだけです。

使い方は、以下になります。

(1)
app/config.phpのalways_load.packagesに'gdata'を加えるか
任意の場所でPackage::load('gdata')して有効にします。

(2)
packages/gdata/config/gdata.php
をapp/config/以下にコピーして、編集します。

(3)
forgeする際、サービス名を渡して下さい。
$gdata = Gdata::forge($service_name);

カレンダーのAPIを使うなら
$gdata = Gdata::forge('calendar');
になります。

$gdata->client
$gdata->service
を駆使して処理を進める感じです。

その他、以下を一通りforge出来ます。(と思っています。。。)
packages/gdata/vendor/google-api-php-client/src/contrib/Google_[サービス名]Service.php

同一プロセスで複数のGdataインスタンスを扱いたい場合は
$gdata_xxx = Gdata::forge('xxx', $instance_name);
$gdata_yyy = Gdata::forge('yyy', $instance_name);
になります。

app側からconfigを上書きしたい場合は、第三引数に配列を渡して下さい。
中でマージしています。
$gdata = Gdata::forge('xxx', 'default', $config);
以下、ControllerでGoogleカレンダー一覧を取得するサンプルです。
public function action_login()
{
    $g = static::get_gdata();
    Response::redirect($g->client->createAuthUrl());
}

public function action_callback()
{
    $g = static::get_gdata();
    $g->client->authenticate();
    //$access_token = $g->client->getAccessToken();
    $calendars = $g->service->calendarList->listCalendarList();
    Debug::dump($calendars);
    exit();
}

private static function get_gdata()
{
    Package::load('gdata');
    return Gdata::forge('calendar'); 
}
refresh tokenの使い方を調べないとなー。

No comments:

Post a Comment