Facebooker を使い Facebook プロフィールを更新する
いったいどのくらいの人にこの情報が役立つか疑問だが、日本語の情報は皆無ではまりにはまったので、自分のためにもメモしておきます。
Facebooker は Rails で Facebook アプリを開発するのを助けてくれるプラグイン。Kanji-Fandom Facebook 版を開発するのに使いました。
» 英語の名前を漢字に変換する Kanji-Fandom Facebook 版をリリースしました : 僕は発展途上技術者
作成したアプリから Facebook のプロフィールに自由に情報を追加したり、更新できるのですが、Facebook 側の仕様が変わっていて、開発当初の方法ではうまくプロフィールが操作できなくなっていました。
StandardError (This method is deprecated):
.../vendor/plugins/facebooker/lib/facebooker/parser.rb:505:in `process'
というエラーが頻発。method is deprecated らしいです。
そこで、あちこち検索を駆使してたどりついたのが以下の情報。
» Agile Ajax » Getting Started with Facebooker » Pathfinder Development
The Funner (More Fun) Stuff: Setting Information セクションの情報に救われました。
まず、大きなミソとなっていたのが、これまでは「Facebook プロフィールを更新しろ」という命令だけで更新できていたのが、
1) プロフィール情報を更新する
2) 更新した情報をプロフィールに明示的に追加する(初回だけ)
の二段階になっていたこと。
これに気づかず、1) だけをおこない、ログを眺めてもエラーが発生していない、でもプロフィールには更新した情報が追加されず、しばらく途方に暮れてしまいました。
まず、わりと比較的楽にクリアできる 1) の部分のコード。
これを
fbml = "This is test"
あるいは、
fbml = render_to_string(:partial => "profile", ...
のように fbml に表示したい内容を入れたあと
TestPublisher.deliver_profile_update(@user, fbml)
のように呼び出せば、プロフィールの情報が更新されます。
続いて 2) の部分をおこなうには、facebook で用意された「プロフィールに追加(Add to Profile)」ボタンをビューから呼び出すのです。
僕の場合は 1) をおこなった直後にリダイレクトされる画面に上記のコードを用意しました。
<fb:if-section-not-added section="profile">で挟むことによって、まだ一度もこの追加処理を行っていない場合にだけボタンが表示されるようにしています。なので、アプリケーションによってはいたるところ、ユーザーの目につくところに置くというのでもいいでしょう。
Facebook は API の仕様がころころ変わる印象を受けます。常にウォッチしていないと、僕のように、ごくたまにメンテで触るというレベルだと正直しんどい。。。
2009/03/17 00:46:54