我有一个google+分享链接,有人可以点击它来分享(在他们自己的流上(由rails应用程序指定的网址(不是当前页面(。
我希望能够记录链接是否已被单击并成功共享。这是我正在使用的谷歌+分享链接代码
<a href="https://plus.google.com/share?url=#{@user.website}" onclick="javascript:window.open(this.href,
'', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=600,width=600');return false;"><img
src="https://www.gstatic.com/images/icons/gplus-64.png" alt="Share on Google+"/></a>
我知道这可以用推特 API 来完成:
<script type="text/javascript">
twttr.ready(function (twttr) {
twttr.events.bind('tweet', function(event) {
$.post('<%="#{record_twitter_share_path}"%>');
});
});
</script>
但是有没有办法用Google+做到这一点
您无法确认某人是否使用"共享"小组件参数或 JavaScript API 将帖子分享到其直播中。Niraj的答案是有缺陷的,不起作用,请参阅此JSBin尝试一下。
在某些情况下,您可以用一个div包围小部件,您可以跟踪对该div 的点击,但这也不起作用。
考虑到Google+上的大多数用户不会公开分享他们的大部分帖子,一个可能有效的选项是,您可以使用REST API的activities.search方法并将您感兴趣的URL作为搜索参数传递,但您不一定知道该特定用户共享了它, 或者它可能是私有的,并且根据您的网站的受欢迎程度,您可能不得不浏览许多页面的结果,可能没有运气。
可以跟踪按钮的单击,但不能跟踪共享本身。如果您使用 Google+ 网页共享按钮,则可以执行以下操作:
<div class="g-plus" data-action="share" data-href="https://www.webniraj.com/2013/10/02/google-api-sharing-an-interactive-post/" data-onendinteraction="trackShare" data-onclick="trackShare"></div>
<!-- Place this asynchronous JavaScript just before your </body> tag -->
<script type="text/javascript">
(function() {
var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
po.src = 'https://apis.google.com/js/client:plusone.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
})();
function trackShare( jsonParam ) {
console.log( jsonParam );
}
</script>
该按钮具有 data-onclick="trackShare"
属性集,该属性调用 JavaScript 函数来触发日志记录。
trackShare
函数中的console.log( jsonParam )
将返回如下内容:
{
"id": target URL,
"type": hover|confirm
}
但是,在我的测试中,即使成功共享,它也只会返回type: hover
。