Facebook で開発するときの心構え

Facebook でアプリ開発を行うときの心構えというか、結構我慢するべき所があります。

Facebook アプリを作成して運用していく場合には以下を先に読まれることをお勧めします。

http://looops-lab.com/naoto/2011/05/26/facebook_application_dev/

とても良くまとまっています。

 

で、開発者としては以下のような点に注意する必要があると思います。

APIの仕様変更が起こるものとして設計する

Facebook に対して何かリクエスト行う部分は関数化してアプリ本体側とは分離
(役割分担と影響範囲の局所化)

リクエストを行う部分がエラーになってもログに出力して
アプリが進行停止にならないようにしておく。
ログへのエラー出力を検出するようにしておくと把握しやすくなります。

PHP の SDK はラッパライブラリ?

タブアプリを作成する際に使用できるかと思って内部を覗いてみましたが
OAuth 2.0 と API の薄皮状態になっています。

ただ気をつける必要があるのが Legacy REST API などを呼び出した場合には
api-read.facebook.com へリクエストを投げていたりなど
ドキュメントに記載されていない事を行っていたりします。

そのため Facebook のプラットホームがバージョンアップされた場合に
動かなくなるかもしれないので PHP の SDK は最初に導入したバージョンを
使い続けることができません。継続的にバージョンアップする必要があります。

メンバ関数の api を呼び出す場合は catch を必ず記述する必要があります。
呼び出し先の下の方から FacebookApiException を飛ばしてくるので
例外を文字列に変換してログに吐き出すようにしておいてください。
(メンバ関数 __toString があります。)

Windows 環境上で Legacy REST API を PHP の SDK から呼び出すと
SSL 証明書の確認でエラーが出ました。

PHP SDK に含まれている fb_ca_chain_bundle.crt には
api-read などのホストがケアされていないか
移行途中なので我慢して使えって事?

ただ、AWS の AWSSDKforPHP を Windows で動かすときの注意点に記載した
define(‘AWS_CERTIFICATE_AUTHORITY’, true);
は開発用途だと思って使用してください。

Facebook 側のサーバはいきなり無反応になる!

開発者にとっては非常に残念なことですが、
Facebook はバックグラウンドで環境のアップデートなどを行います。

7月1日の Facebook Credit に向けて
Developer App の更新作業を行っていたためだと思うのですが、
管理者の登録までは行えるのに承認するための通知が飛ばない状態に
一時的になっていました。(数時間もしくは一日以上のオーダーです。)

設定変更の方は怖くて試していないのですが、こういった症状が起きた場合は
別の管理者のアカウント側からであれば設定変更できたりするかもしれません。

 

別の症状としてはタブアプリでページが表示されるのですが、
ページプロキシである

http://static.ak.facebook.com/platform/page_proxy.php?v=4

からのリクエストが10分ほど途絶えました。

ブラウザ上の見た目では、
タブアプリを表示させようとすると真っ白な画面で
サーバにアクセスがこない状態です。

で、こういった症状が発生することがあるようなので、
このような状態に陥った場合は休憩をとるしかないと思います。

 

ちょっと長くなりましたが、Facebook と仲良く付き合っていくには
欧米のスタイルを受け入れる必要があります。
(サービスは24時間365日止めるなは通用しないw)

ただ、Facebook の Developer Blog は以前に比べてだいぶ開発者に有益な情報を
記載してくれるようになっているので Facebook 自体も変わりつつあります。

 

This entry was posted in Facebook, Facebook API. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>