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

2022-08-30 19:56:58

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


答案 1

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

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

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


答案 2

只要它保持活动状态,您就可以使用Facebook的“Feed”对话框而不是“共享”对话框来始终获得共享确认。(这适用于Javascript Facebook SDK。

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


分享方式

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

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

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

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

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

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


进料方式

(已弃用,但仍处于活动状态)

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

无论登录状态如何(w.r.t.您的应用程序;他们仍然需要登录Facebook):

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

使用此方法,您将始终能够判断某人是否发布,无论他们的登录状态如何。


推荐