廃止されてしまったシェアボタンの代わりに使われている/sharer/sharer.phpのドキュメントが削除されたので、ついにシェアボタンの代替手段まで使えなくなるかもしれないという話を昨日紹介しました。そこで、今回はFeed Dialogを利用してシェアを実装する手段を紹介します。sharer.phpのドキュメントが削除された後はFeed Dialogのドキュメントへとリダイレクトされるようになりましたから、シェアの代替手段としてはこれが推奨されているようです。

現状

よく使われている代替手段は、以下のようなリンクでシェア用ダイアログページを表示し、そこからシェアさせるというものです。
<a href="https://www.facebook.com/sharer/sharer.php?u=http://facebook-docs.oklahome.net/archives/52065629.html" target="_blank"><img src="share_icon_hogehoge.png"></a>

ダイアログを表示したところ

別ウィンドウでダイアログが開きます。
c6bc4e8ff7df5218f09f5ba4c816bfc2

タイムライン上での表示

テストユーザを作成し、そのユーザでシェアしてみた結果です。テストユーザの作成方法はテストユーザのドキュメント日本語訳をご覧ください。テストの為に連投する場合などは、スパム認定されない為にもテストユーザを利用するのが吉です。
シェア内容の表示は、廃止されたシェアボタンと同じです。
7d0c1e49bd7c49210ede425f62474433

ニュースフィード上での表示

テストユーザを2つ作成し、友達関係を作ってニュースフィードへの流れ方を見ることができます。好きな映画の登場人物の性格を元にテストユーザを使い分けるとちょっと楽しいですね。
d2f83d09ad0c9745b997befe08d161f0

Feed Dialogで実装

Feed Dialogドキュメントで紹介されているコードをコピペして、appIdの部分とパラメータだけ変更してlinkにシェアしたいページURLを指定します。実際にはsharer.phpと同様、location.hrefを指定するケースが多そうです。
<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:fb="https://www.facebook.com/2008/fbml">
  <head>
    <title>My Feed Dialog Page</title>
  </head>
  <body>
    <div id='fb-root'></div>
    <script src='http://connect.facebook.net/ja_JP/all.js'></script>
    <p><a onclick='postToFeed(); return false;'>シェア</a></p>
    <p id='msg'></p>

    <script>
      FB.init({appId: 127497087322461, status: true, cookie: true});

      function postToFeed() {

        // calling the API ...
        var obj = {
          method: 'feed',
          link: 'http://facebook-docs.oklahome.net/archives/52065629.html',
          picture: '',
          name: '',
          caption: '',
          description: ''
        };

        function callback(response) {
          document.getElementById('msg').innerHTML = "Post ID: " + response['post_id'];
        }

        FB.ui(obj, callback);
      }
           
    </script>
  </body>
</html>

ダイアログを表示したところ

ダイアログを使う場合でもユーザ自身が操作してサブミットすることになるので、特にパーミッションは必要ありません。ユーザによるアプリの認証など無しにすぐ使えます。
sharer.phpへのリンクの場合と違ってページ遷移しないところがちょっと便利ですね。文言も「シェア」なので分かりやすいです。
0920f5046c0a410875d463fef1886c67

タイムライン上での表示

sharer.phpからのシェアと違って、サムネイル画像と説明文の所が薄いグレーで縁取りされていません。自分のコメントとの境界が曖昧になってしまっている感じが若干します。
1f3bb9821d3253fac8921f05f9aacbb0

ニュースフィード上での表示

こちらでも同様に縁取りはありません。ただし、「フェイスブック開発者向けドキュメントの日本語とTipsより」という風にブログのタイトルが表示されています。ブログ管理用のアプリを作成し、そのアプリ名をブログタイトルと同じものにしている為で、ここをクリックするとブログトップ画面へと遷移します。記事タイトルをクリックした場合はsharer.phpと同様、共有した記事へと飛びます。
eb31c872f011516c52967e39d760c49b

まとめ

Feed Dialogを使う利点

  • 別ウィンドウでsharer.phpを開くよりも遷移がすっきりしている
  • アプリ名とリンクが表示されるので、記事本体へのリンクとサイトトップへのリンクを両方出せる
  • captionパラメータに文字列を指定するとキャプション付きでシェアされ、記事タイトル下にURLの代わりに表示される

sharer.phpを使う利点

  • 先日廃止されたシェアボタンと全く同じようにシェアされ、ニュースフィード上でもタイムライン上でも同じように表示されて違和感が無い
  • ちゃんとシェアとしてカウントされるので、いいね!ボタン横の数値に反映される