Facebookについて今日調べたこと

Facebookを使うには、Facebookのトップページ(http://ja-jp.facebook.com/)にアクセスして、まずアカウントを登録する。アカウント作成には、メールアドレス、パスワード、生年月日が求められる。生年月日は本人を特定したり、年齢ごとにコンテンツを切り替えたりするのに使用される。入力したメールアドレスに送られる確認用リンクをクリックすると、登録は完了する。

トップページから「有名人、バンド、ビジネスのためにFacebookページ」をクリックして、同好のファンとつながるためのページを作成する画面に遷移できるが、実際にFacebookページを作成するためには、Facebookのアカウントを作成する必要がある。ただし、プロフィールを作成しないと、そのページの編集しか行えない。

Facebook利用規約https://www.facebook.com/terms.php)には、「Facebookユーザーのコンテンツまたは情報を収集することはできません。また、弊社の許可を得ることなく、自動化された手段(情報収集ボット、ロボット、スパイダー、スクレーパーなど)を使用して、Facebookにアクセスすることはできません。」とある。Facebookページの作成時などにCAPTCHAが表示され、ユーザが実際に操作していることの確認が行われる。

http://www.facebook-japan.com/use/part1/function.htmlのよると、Facebookにはチャット、コミュニティ(ファンページ)、外部ブログのインポート、アプリケーション、友達検索、リアルタイムコミュニケーション(状況)、メッセージ統合などの機能がある。
http://socialmediaexperience.jp/2638によると、Facebookアプリケーションは、外部に公開したHTTPSサーバ上でPHPを用いて作成するのか。そして、アクセスしてきたユーザの情報はFacebookAPIから取得できると。認証以外は、ただのPHPアプリケーションだとすると、何を書けばいいのやら。PHPに限定されるというのが、疑問。最初は限定されていたのかも。

http://developers.facebook.com/Facebook APIの公式ページである。
http://developers.facebook.com/docs/guides/web/のSocial Pluginsでは、Facebookの「いいね」リンクを自分のサイトに組み込む方法を説明している。コメントやライブストリームを取り込むには、XFBML (eXtended Facebook Markup Language)が必要となる。

http://itpro.nikkeibp.co.jp/article/COLUMN/20070828/280514/によると、Facebook を利用したアプリケーションは,大きく次の3種に分類できる。
1. 外部ウェブサイト向けアプリケーション(External Web Apps): Facebook 外のウェブサイトが Facebook の会員ユーザー情報などを利用する
2. デスクトップ向けアプリケーション(External Desktop Apps): Facebook 外のデスクトップアプリケーションが Facebook の会員ユーザー情報などを利用する
3. Facebook 内アプリケーション(Internal Facebook Apps):Facebookのサイト内で、Facebook の機能を拡張する。A. プロフィール画面用(プロフィールの画面要素をAPIを用いて更新する)とB. キャンバス画面用の2種類が存在する。B. キャンバス画面用のアプリケーションは、http://apps.facebook.com/foo-bar/という専用URLを取得できる。iframeを用いた場合、外部ウェブサイト向けアプリケーションをFacebook サイト内のキャンバス画面に押し込んだような形となる。Facebookから呼び出された外部ウェブサイトがFBMLを返す形式もある。

http://itpro.nikkeibp.co.jp/article/COLUMN/20070828/280514/の記事では、Facebookから外部サイトにXMLが返されるとあるが、JSONの場合もあるのでは。APIのバージョンが違うからかもしれない。

いずれの場合も、Facebookによるアプリケーションの認証、そのアプリケーションへの情報提供をユーザが明示的に許可することが必要となる。

http://developers.facebook.com/docs/を読むと、認証情報+αにアクセスするだけといっても、考慮すべきことは山ほどある。まずはどこにフォーカスを当てようか。

http://developers.facebook.com/docs/plugins/に、外部サイトに組み込めるSocial Pluginの一覧が記されている。
プラグインのページで、そのプラグインを使用するためのiFrameとXFBMLのコードを吐きだすことができる。XFBMLの場合は、読み込むJavaScriptロケールをen_USからja_JPに変える必要があるだろう。

Facebookは、OAuth 2.0(http://oauth.net/2/)を利用している。

デスクトップアプリケーションの場合は、下記にアクセスすれば、いいらしいが、エラーとなる。何かが足りないらしい。アプリケーションIDをちゃんと取得しないと駄目だという話だった。あとは、httpsではだめで、httpならうまくいく。あるいは、自動ログインをオンにしていたらうまくいく?
https://www.facebook.com/dialog/oauth?client_id=YOUR_APP_ID&redirect_uri=http://www.facebook.com/connect/login_success.html&response_type=token

http://www.sociallipstick.com/?p=239ではOAuth 2.0がFacebookで、どのように使われている解説されている。OAuth 2.0では、アクセストークンを取得し、そのトークンを用いて、保護されているリソースにアクセスする。typeを指定しなかったときのデフォルトがWeb server flowである。Facebookのサイトからclient_idに登録されたサイトに、ユーザからのアクセス許可後にリダイレクトしてくる。デスクトップアプリケーションでは、User-agent flowが使われる。トークンはサーバに送られず、直接クライアントに返される。

http://developers.facebook.com/setup/にアクセスして、アプリケーションを取得し、アプリケーションIDを取得する。

http://www.facebook.com/developers/apps.phpで、自分が作ったアプリケーションの状態が確認できる。