42
43

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ソーシャル投稿ボタンのクリックのcallbackをJS から知る方法

Last updated at Posted at 2014-02-24

ソーシャルボタンの種類とドキュメント

|公式ドキュメント|URL|
|:-----------|------------:||
|twitter|https://dev.twitter.com/docs/intents/events#tweet|
|Facebook|https://developers.facebook.com/docs/reference/javascript/FB.Event.subscribe|
|Google+|https://developers.google.com/+/web/+1button/#plusonetag-parameter|

Google+
スニペットgoogle (+https://developers.google.com/+/web/snippet/)というテキストを含むユーザー エージェントのリクエストが表示されます

html

Google+ の場合、callbackを呼ぶためにタグにdata-callback="gplus" を追加しています。

<!-- twitter -->
<a href="https://twitter.com/share" class="twitter-share-button" data-lang="ja">ツイート</a>
<!-- //twitter -->

<!-- Facebook -->
<div id="fb-root"></div>
<div class="fb-like" data-href="{サイトのURL}" data-layout="button_count" data-action="like" data-show-faces="false" data-share="false"></div>
<!-- Facebook -->

<!-- Google+ -->
<div class="g-plusone" data-size="medium" data-annotation="none" data-callback="gplus"></div>
<!-- //Google+ -->

JS

投稿コールバック拾うための実装

  // twitter 
  window.twttr = (function (d,s,id) {
  var t, js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return; js=d.createElement(s); js.id=id;
  js.src="//platform.twitter.com/widgets.js"; fjs.parentNode.insertBefore(js, fjs);
  return window.twttr || (t = { _e: [], ready: function(f){ t._e.push(f) } });
  }(document, "script", "twitter-wjs"))

  // twitter callback
  twttr.ready(function (twttr) {
    twttr.events.bind('tweet', function(event) {
      // 何か書く
    });
  });

  // facebook
  (function(d, s, id) {
    var js, fjs = d.getElementsByTagName(s)[0];
    if (d.getElementById(id)) return;
    js = d.createElement(s); js.id = id;
    js.src = "//connect.facebook.net/ja_JP/all.js#xfbml=1";
    fjs.parentNode.insertBefore(js, fjs);
  }(document, 'script', 'facebook-jssdk'));

  // facebook callback
  window.fbAsyncInit = function() {
    FB.Event.subscribe('edge.create', function(response) {
      // 何か書く
    });
  };

  // googleplus
  window.___gcfg = {lang: 'ja'};
  (function() {
  var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
  po.src = 'https://apis.google.com/js/platform.js';
  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
  })();

  // googleplus callback
  window.gplus = function (data) {
    // 解除された時もcallback呼ばれるので
    if (data['state'] == 'on') {
        // 何か書く
    }
  }

Google Analytics で trackingする方法

gaTrackingSocial

 

Facebookクローラー

Facebook向けにいい感じにサムネイルされるようにするには、

各ページのHTMLでOGP用のmetaタグで適用される画像や文言を指定します。

Facebookクローラーのユーザエージェント

facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)
42
43
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
42
43

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?