Hatena::ブログ(Diary)

hsksnote RSSフィード Twitter

2012-02-19

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

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


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


Amon2とFacebook APIとDotCloudと。

PerlFacebook APIを使うには、Facebook::Graphを使うのが良さそうだったので、以下のサイトを見ながらごにょごにょやってた。

Facebook APIを叩いてみる - すぎゃーんメモ

Hello Perl! - [実用] Facebookアプリ事始め

でもうまくいかなかった。


で、Amon2のプラグインでAmon2::Auth::Site::Facebookっていうのがあるのがわかった。使ってみたらうまくいったよ。Amon2::Authの使い方は上、Site::Facebookを使った実例は下のリンクをご参照。

Amon2::Auth によるロケタッチAPIをつかったサイトの構築 〜 軽量フレームワークAmon2入門 (6) 〜 - tokuhirom's blog.

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