Amon2を使って!DotCloudで!Facebook アプリを作りたい!(まだ試し中)
Facebookアプリ、あるじゃないですか。Facebookの中でアプリを動かしてるアレ。アレどうやってやるんだろうと思って、いろいろ試してみたメモ。まだうまく動いてない。
一応前提として、Amon2の DotCloud FlavorとBasic Flavorを使ってテンプレートを作ってます。
Amon2とFacebook APIとDotCloudと。
PerlでFacebook APIを使うには、Facebook::Graphを使うのが良さそうだったので、以下のサイトを見ながらごにょごにょやってた。
Facebook APIを叩いてみる - すぎゃーんメモ
http://helloperl.com/example_facebook.permalink
でもうまくいかなかった。
で、Amon2のプラグインでAmon2::Auth::Site::Facebookっていうのがあるのがわかった。使ってみたらうまくいったよ。Amon2::Authの使い方は上、Site::Facebookを使った実例は下のリンクをご参照。
http://d.hatena.ne.jp/tokuhirom/20111017/1318805026
Amon2でFacebookAPIを使う その2 - Perl勉強メモ アルパカDiary出張版
コードは下のリンクほぼそのままで動いた。
DotCloud上で動かす場合は、プラグインの設定をconfig/deployment.plに書く。development.plにも書いてるけど、不要なのかもしれない。
Facebook内のアプリ
以下の記事(Facebook developerのCanvas Tutorialを和訳したもの)を参考に。自分で用意したwebページをiframeで呼び出す形式みたい。
Apps on Facebook.com : Facebook開発者向けドキュメントの日本語訳とTips
試しにDotCloud上で、認証用URLにリダイレクトするだけのページを作ってみたら、以下のエラーが吐かれた。
POST http://fbsample-hsksyusk.dotcloud.com/fbpage/ 403 (Forbidden) Refused to display document because display forbidden by X-Frame-Options.
パケットを調べると、DotCloudからのレスポンスヘッダーのX-Frame-OptionsがDENYになってた。DotCloudさんの仕様?
ヘッダを上書きして、X-Frame-Optionsに適当な文字列をセットして、DENYコマンドを無効にすれば、うまくいくようになるみたい。
iframe - Overcoming "Display forbidden by X-Frame-Options" - Stack Overflow
といったところで、眠気がきたので寝ます。
2012.2.21追記
X-Frame-Optionsは、Amon2のlib/アプリの名前/Web.pmで出力してたのでコメントアウトした。
それでも403エラー。ローカルでiframeからDotCloudにアクセスしたら正常に表示されたから、たぶん呼び出し方の問題なんだろうけど、もう眠いので寝ます。
2012.2.26追記
解決しました。
Facebook内で使うタイプのアプリで認証にAmon2::Authを使う方法 - hsksnote