Facebookアプリ開発に挑戦(その7・ウォールへの投稿)

  • 投稿日:
  • by
  • カテゴリ:

アプリケーションから、ウォールにメッセージを投稿する機能が必要な場合もあります。
今日は、メッセージ投稿のダイアログボックスを表示して、ユーザーに投稿を促す方法を紹介します。

1.FB.ui関数

JavaScript SDKには、ダイアログボックスを開くための関数として、「FB.ui」があります。
この関数は、以下のような書き方をします。

FB.ui(
  {
    method: 'ダイアログの種類',
    ・
    ・(その他のパラメータ)
    ・
  },
  function(response) {
    ダイアログの操作結果に応じた処理
  }
);

FB.ui関数の1つ目のパラメータには、ダイアログの種類や、そのダイアログで必要な各種のパラメータを指定します。
そして、2つ目のパラメータとして、ダイアログの操作結果に応じた処理を行うためのコールバック関数を指定します。

2.ウォール投稿のダイアログボックスを開く

ウォールに投稿するためのダイアログボックスを開くには、FB.ui関数に渡すダイアログの種類として、「feed」を指定します。
この他に、以下のリストのようにパラメータを指定します。

FB.ui(
  {
    method: 'feed',
    name: 'リンク先の名前',
    link: 'リンク先のアドレス',
    picture: '画像のアドレス',
    caption: 'キャプション',
    description: '概要',
    message: 'メッセージ'
  },
  function(response) {
    ・
    ・ダイアログの操作結果に応じた処理
    ・
  }
);

各パラメータの内容は以下の通りです。

リンク先の名前メッセージのリンク先のページの名前
リンク先のアドレスメッセージのリンク先となるページのアドレス
画像のアドレスメッセージに添付する画像のアドレス
キャプションリンク先ページのキャプション
概要リンク先ページの概要
メッセージメッセージ入力欄に初期値として入力される文字列

また、実際に表示されるダイアログボックスは、以下のようになります。
なお、この例では、画像のアドレスとして「http://fbrell.com/f8.jpg」を指定しています。

メッセージ投稿ダイアログボックスの表示例

3.投稿されたメッセージの情報を得る

メッセージを投稿するか、投稿せずにダイアログボックスを閉じると、コールバック関数が実行されます。

メッセージを投稿した場合、コールバック関数のパラメータに、メッセージのIDの情報が入ったオブジェクトが渡されます。
メッセージのIDは、そのオブジェクトの「post_id」というプロパティで表されます。
post_idプロパティの値は、メッセージを投稿したユーザーのIDと、メッセージ自体のIDとを、「_」で結んだ文字列になります。

一方、メッセージを投稿せずにダイアログボックスを閉じた場合、コールバック関数のパラメータには何も渡されません。

これらのことから、コールバック関数を以下のように組むことで、メッセージが投稿されたかどうかに応じて、適切な処理を行うことができます。

function(response) {
  if (response && response.post_id) {
    var ids = response.post_id.split('_');
    ・
    ・(メッセージが投稿されたときの処理
    ・  ids[0]がメッセージを投稿したユーザーのIDで、
    ・  ids[1]がメッセージ自体のID)
    ・
  }
  else {
    ・
    ・(メッセージが投稿されなかったときの処理)
    ・
  }
}

なお、個別のメッセージのアドレスは、「http://www.facebook.com/permalink.php?id=ユーザーのID&story_fbid=メッセージのID」で表すことができます。