Amon2を使って!DotCloudで!Facebook アプリを作りたい!(まだ試し中)

Facebookアプリ、あるじゃないですか。Facebookの中でアプリを動かしてるアレ。アレどうやってやるんだろうと思って、いろいろ試してみたメモ。まだうまく動いてない。


一応前提として、Amon2の DotCloud FlavorとBasic Flavorを使ってテンプレートを作ってます。

Amon2とFacebook APIとDotCloudと。

PerlFacebook 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