今更だけどfacebookのShare方法まとめ

とっても今更ですが、よく聞かれるのでfacebookのShare方法をまとめます。

facebookのShare方法には大きく分けると2種類あります。

1. sharer.phpを使う

http://www.facebook.com/sharer/sharer.php?u=http%3A%2F%2Fgoogle.com 

sharer.phpに「u」というパラメータでURLを渡せば、渡したURLのOGPを読み取ってShareを促すことができます。

この方法は、昔あったShareボタンのPluginのURLを抜き出したものなので、現在はShareボタンと同様に公式によるサポートはありません。
そのため、いきなりこの方法が使用できなくなる可能性もありますし、Share画面のレイアウトもきれいなものではありません。

いつの間にか、公式ドキュメントにsharer.phpが復活していました。https://developers.facebook.com/docs/reference/plugins/share-links/

ということで、現状(2013/07時点)は公式にサポートされているみたいです。Share画面のレイアウトも綺麗になっています。

2. feed dialogを使う

公式ドキュメントはこちら。
https://developers.facebook.com/docs/reference/dialogs/feed/

http://www.facebook.com/dialog/feed?
  app_id=458358780877780&
  link=http://developers.facebook.com/docs/reference/dialogs/&
  picture=http://fbrell.com/f8.jpg&
  name=Facebook%20Dialogs&
  caption=Reference%20Documentation&
  description=Using%20Dialogs%20to%20interact%20with%20users.&
  redirect_uri=https://mighty-lowlands-6381.herokuapp.com/

上記URLのリンクはこちらです。

feed dialogに対して、各OGPのパラメータを渡せば、その値でShareを促すことができます。
もちろん、すべてのOGPを渡さなくても、「link」パラメータで渡したURLにOGPが設定されていれば、そちらの値で補ってくれます。

OGPのパラメータ以外に、app_idとredirect_uriを渡さなければならず、redirect_uriはアプリの設定でされているドメイン以下でなければエラーになってしまいます。

OGPとShareの関係性

ShareはOGPの値によって形成されます。
f:id:w6500:20120909160003p:plain

2つの方法の違い

1の方法に比べて、2の方法で大きく違う点は「アプリ経由のShareになる」という点です。

2の方法は、パラメータでapp_idを渡している通り、Share画面にも、「○○(アプリ名)より」という表示がされています。
そのため、1の方法と違いfacebook appを作成しなければ2の方法は使用できません。

さらに、2の方法は、実際にShare画面でシェアを実行した先のページは、redirect_uriパラメータで渡されたURLに遷移されます。
1の方法の完了画面はfacebook側ですが、2の方法の完了画面はアプリ側で作成しなければいけません。
また、redirect_uriに遷移した際、facebookはパラメータに「post_id」というパラメータで、ユーザーが投稿したIDを渡してくれます。
redirect先でpost_idを使って投稿したページへのリンクを用意したり、いろいろ応用できると思います。

できないこと

どちらの方法も、Share画面のテキストエリアに文言を設定できることはできません。
(2の方法は昔できた記憶があるけど、できなくなってるような気がする)

まとめ

手っ取り早く済ませたい場合は1の方法。
しっかりと対応したい場合は2の方法。