有没有办法以编程方式检查用户是否在Facebook上共享链接?

时间:2011-03-19 17:13:18

标签: php jquery facebook

我目前正在使用jQuery记录我网站上Facebook共享链接的每次点击,但我正在寻找更准确的解决方案。我没有记录点击,而是记录实际的“份额”。有没有办法在用户共享链接后从Facebook获回响应消息?

5 个答案:

答案 0 :(得分:28)

我今天遇到了这个问题:http://graph.facebook.com/http://stackoverflow.com

它返回指定URL的总份额。我的应用程序中的每个用户都有唯一的URL,因此我可以使用此功能轻松跟踪其共享。

它也适用于Twitter:http://urls.api.twitter.com/1/urls/count.json?url=http://stackoverflow.com

答案 1 :(得分:2)

只要它仍然有效,您就可以使用Facebook" Feed"对话而不是" Share"对话框始终获得共享确认。 (这适用于Javascript Facebook SDK。)

这是我对两者之间差异的理解:


Share Method

FB.ui({
    method: 'share',
    href: 'http://stackoverflow.com/questions/5363517',
}, function(response){
   console.log(response)
});

如果用户已登录并授权您的应用:

  • 如果帖子已共享,您会在response变量中获得一个帖子ID:{post_id: "10205041067000110_10205045578512895"}
  • 如果帖子未共享,response将为空。

如果用户未登录到您的应用程序(他们仍需要登录Facebook):

  • 无论用户是共享还是未共享,response变量都将为空。

因此,如果您绝对需要共享确认,则必须先要求用户登录。这可能不是您的应用程序的问题,但在我的情况下,这给共享过程增加了不必要的摩擦。


Feed Method

(已弃用但仍处于有效状态)

FB.ui({
  method: 'feed',
  link: 'http://stackoverflow.com/questions/5363517',
  caption: 'Test Caption',
}, function(response){
    console.log(response)
});

登录状态的反应(w.r.t。您的应用;他们仍然需要登录Facebook):

  • 如果实际分享了帖子,则Facebook返回的response变量的帖子ID为{post_id: "10205041067000110_10205045578512895"}
  • 如果帖子未共享,response将为空。

使用此方法,无论登录状态如何,您都可以随时判断是否有人发布。

答案 2 :(得分:0)

您可以使用ShareThis之类的东西代替您的jquery函数,甚至可以获得更多的见解,分析等。 但是,您会遇到同样的问题,这些问题是通过非现场分享/喜欢创建的,例如发布在此处:http://forums.sharethis.com/topic.php?id=2947

答案 3 :(得分:0)

这就是我所做的....使用调用此javascript函数的常规锚点创建共享(间距或括号或某些内容可能已关闭):

FB.ui(
        {

            display:'iframe',
            method: 'stream.publish',
            caption: 'Put something here',
            description: 'put something here',
            name: 'foo',
            link: 'http://www.foo.com',
            picture: 'http://fo.com/img.gif'

        },
        function (response) {
            if (response && response.post_id) {
            //this means the post was completed....response.post_id is the FB post ID

            $.ajax({
                var URL = '/pages/ajax_InsertUserFacebookPost.aspx?';
                URL += 'facebookpostid=' + response.post_id;
                    type: "GET",
                    url: URL,
                    data: "{}",
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    async: true
                });


            } else {
                //alert('Post was not published.');
            }
        }
        );

答案 4 :(得分:0)

截至2016年4月,Twitter有deprecated v1他们的api,并且没有为之前的方法提供替代方法来确定链接的份额。您need to use他们的搜索API只维护过去7天的共享计数,现在您需要订阅他们的流式API以维持您自己的长期运行计数。

或者,您可以使用免费服务,例如http://newsharecounts.comhttp://opensharecount.com/,以便他们代表您订阅API并维持计数。但是,预计共享计数可能需要一分钟(或更长时间)才能更新。

来自newsharecounts常见问题 -

  

"无论您的网站有多大,或者您的内容有多大,我们平均在1分钟内检测到新股#34;

来自opensharecount.com主页 -

  

"搜索结果可能需要一些时间才能进入,因此最初报告的计数在所有链接上都为零。如果一小时后仍然为零,请与我们联系。 "

Re:FB分享(http://graph.facebook.com/(url)),请注意,用户可以使用共享对话框并选择“只有我”。选项,它仍然与他们与朋友分享的方式相同。知道分享者之后不久也可以删除帖子,但未来对api的调用不会反映出来。