オフラインアクセス(3/3)
では今回は、前回取得したアクセストークンを使用して、Facebookにオフラインアクセスしてみましょう。fb.php を以下のように修正して、コマンドラインでPHPを実行します。
<?php require 'facebook/facebook.php'; $user_token = 'アクセストークン'; $facebook = new Facebook(array( 'appId' => 'アプリID', 'secret' => 'アプリの秘訣', 'cookie' => false, )); // タイムゾーンを変更する関数 function conv_tz($y=NULL, $m=NULL, $d=NULL, $h=0, $i=0, $s=0) { if( is_null($y) ) $y = date("Y"); if( is_null($m) ) $m = date("m"); if( is_null($d) ) $d = date("d"); $before_tz = date_default_timezone_get(); date_default_timezone_set('America/Los_Angeles'); $ts = mktime($h, $i, $s, $m, $d, $y); date_default_timezone_set($before_tz); return $ts; } $res = $facebook->api( "/me/events", "POST", array( "access_token" => $user_token, "name" => "イベント名を適当に", "description" => "イベントの説明です", "privacy" => "SECRET", // or OPEN or CLOSED "start_time" => conv_tz(2011, 3, 23, 15, 30), "end_time" => conv_tz(2011, 3, 25, 10), ) ); var_dump($res);
このように実行します。成功すればイベントIDが返ってきます。
> php fb.php array(1) { ["id"]=> string(15) "イベントID" }
少し説明を。
apiの引数
- access_token:これに前回取得したアクセストークンをセットします
- name:イベント名です
- description:イベントの説明です
- privacy:イベントの公開設定です。指定できるのは3種類です。こちら から引用します
- OPEN:イベント情報は公開され、誰でも参加 (参加者リストに名を連ねる) できます。
- CLOSED:イベント情報は公開されますが、イベントの作成者が招待しないと参加できません。
- SECRET:非公開。カレンダーに自分用の予定を入れたりするのに使うと良いでしょう。
- start_time:イベントの開始日時です(※)
- end_time:イベントの終了日時です(※)
さらに詳しい情報は、こちら をご覧下さい
※指定する日時について
これが結構厄介なのですが、日付文字列 or タイムスタンプ を受け付けるようになってまして、普通に"2010-01-01" とか、mktime() 関数で簡単かと思いきや、どうもイベントのタイムゾーンがFacebook内部では太平洋標準時が使用されているようで、日本時間だと変な時間になってしまいます。タイムゾーン付き日付でもだめっぽいです。しかも太平洋標準時はサマータイムが導入されていますので、さらにややこいです。まぁアメリカ人が作ったシステムなので、そういうこともありますね。
# ブラウザでイベントを作成する際にサマータイムの切り替わり日 2011/3/13 は2:00が選択できなくなっています。
なので、conv_tz関数で、America/Los_Angeles タイムゾーンのタイムスタンンプを取得するようにしました。mktime 関数はサマータイムも考慮してくれるようなので、それ程難しくないですね。