FacebookページにAPI経由で投稿できるトークン

少々はまったので備忘録的に残しておきます。 今回実装したかったのは、ユーザーが管理しているページのウォールに写真を投稿すると言う機能です。 この際、いつも通りユーザーのOAuth認証をくぐり抜け、scope=manage_pagesなトークンを利用すれば出来るのかな?と思っていました。が、この際に取得できるトークンではユーザーが管理者を努めるページの情報を引き出すのみ。どうやら投稿が出来ない。 なぜ?とググってみたところ、どうやらページ個別にトークンが発行されており、それを使えとの情報がありました。 実際には、ユーザーのトークンを利用して、以下のURLにアクセスすると、ユーザーが管理するページのトークンが引っ張りだせます。 https://graph.facebook.com/me/accounts?access_token=管理ユーザーのアクセストークン と、言う事で無事にページ毎のトークンも取得でき、写真も投稿する事ができましたとさ。  

CakePHP2.0でSessionをオートスタートさせる

今、CakePHP2.0.4でとあるアプリケーションを開発中です。Cake1.x台から色々と変わっているので手探り状態ですが。 で、Cake1.xの頃はSessionを自動でスタートしてくれるオプションSession.startがありましたが、どうもCakePHP2.0のcoreを眺めているとそれに値する項目が無い…。 で、何でなんで?と調べてみたところ、./lib/Cake/Model/Datasource/CakeSession.phpに書いてありました。単にcore.phpの中に詳しい記述が無いだけみたい。 このデフォルトの設定をcore.phpの中でオーバーライトしてあげればOK。 自分の備忘録も兼ねて、core.phpに設定可能なSession周りの設定を以下にコピペしておきます。

FQL – Facebook Query Language

今、仕事でFacebookアプリを作っています。 アプリの処理の中で同じGraph APIをループで取得し続ける処理があったのですが、どうにもこうにも、リクエスト当りのコストが高くなってしまい「モッサリ」した動きをしていました。 そんな中、「You!これ使っちゃいなよ!」と神のお告げが。 FQL – Facebook Query Language FQL – Facebook Query LanguageはFacebook上のデータをSQL文の様なイメージで高速に取得する事が可能なインターフェースです。 例えば、ログインユーザーの友達情報を取得したいなら、こんなURLでHTTP GETで取得可能です。 $url = ‘https://graph.facebook.com/fql?q=’; $url.= ‘SELECT+name,+pic_square_with_logo,+birthday+FROM+user+WHERE+uid+IN+(+SELECT+uid2+FROM+friend+WHERE+uid1=me())’; $url.= ‘&access_token=アクセストークン’; 今回はCakePHP2.0系で開発をしているので、Facebook用のモデルを拡張して$this->Facebook->find( ‘friend’, $access_token ); みたいな感じで利用出来る様にしようかと思います。で、モデルキャッシュ入れればOKと。

PHPでHTMLをパース

Simple HTML Domと言うライブラリがあります。PHPで動作し、jQueryライクにDomコントロールする事が可能です。 今回、PHPでとあるサイトのHTMLをパースする必要があったのでやってみました。また、今回はCakePHP2系のVendorsにダウンロードしたSimple HTML Domを突っ込んで、Taskで利用すると言うものでした。