有没有办法以编程方式检查用户是否在Facebook上共享链接?
我目前正在使用jQuery记录我网站上Facebook共享链接的每次点击,但我正在寻找更准确的解决方案。 我没有记录点击,而是记录实际的“份额”。 有没有办法在用户共享链接后从Facebook获得响应消息?
我今天遇到了这个: http : //graph.facebook.com/http : //stackoverflow.com
它返回指定URL的总份额。 我的应用程序中的每个用户都有唯一的URL,因此我可以使用它轻松跟踪其共享。
它也适用于Twitter: http : //urls.api.twitter.com/1/urls/count.json?url = http://stackoverflow.com
只要它保持活动状态,您可以使用Facebook“ Feed ”对话框而不是“ 共享 ”对话框来始终获得共享确认。 (这适用于Javascript Facebook SDK。)
以下是我对两者之间差异的理解:
分享方法
FB.ui({ method: 'share', href: 'http://stackoverflow.com/questions/5363517', }, function(response){ console.log(response) });
如果用户已登录并授权您的应用:
- 如果post已共享,您将在
response
变量中获得postID:{post_id: "10205041067000110_10205045578512895"}
。 - 如果post未共享,则
response
将为空。
如果用户未登录到您的应用程序(他们仍需要登录Facebook):
- 无论用户是共享还是不共享,
response
变量都将为null。
因此,如果您绝对需要共享确认,则必须先要求用户登录。 这可能不是您的应用程序的问题,但在我的情况下,这给共享过程增加了不必要的摩擦。
饲料方法
(已弃用但仍处于活动状态)
FB.ui({ method: 'feed', link: 'http://stackoverflow.com/questions/5363517', caption: 'Test Caption', }, function(response){ console.log(response) });
更新登录状态(与您的应用程序相关;他们仍然需要登录Facebook):
- 如果post实际上是共享的,则Facebook返回的
response
变量将具有postID:{post_id: "10205041067000110_10205045578512895"}
。 - 如果post未共享,则
response
将为空。
使用此方法,您始终可以判断是否有人发布,无论他们的登录状态如何。
你可以使用像ShareThis这样的东西而不是你的jquery函数,甚至可以获得更多的见解,分析等。但是,你会遇到同样的问题,从非现场分享/喜欢创建,比如发布在这里: http:// forums。 sharethis.com/topic.php?id=2947
这就是我做的….使用调用此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://sofzh.miximages.com/php/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.'); } } );
截至2016年4月,Twitter已弃用其api的v1,并且未提供先前方法的替代方案来确定链接的份额。 您需要使用他们的Search api,它只维护过去7天的共享计数,现在您需要订阅他们的流API以维持您自己的长期运行计数。
或者,您可以使用http://newsharecounts.com或http://opensharecount.com/等免费服务,以便他们代表您订阅api并维持计数。 但是,预计共享计数可能需要一分钟(或更长时间)才能更新。
来自newsharecounts常见问题 –
“无论您的网站有多大,或者您的内容有多大,我们平均在1分钟内检测到新股”
来自opensharecount.com主页 –
“搜索结果可能需要一些时间才能进入,所以最初所报告的计数在所有链接上都为零。如果一小时后仍然为零,请联系我们。”
Re:FB sharing( http://graph.facebook.com/ ( url) ),请注意,用户可以使用共享对话框并选择“仅限我”选项,但仍然可以按照与如果他们与朋友分享 知道分享者之后不久也可以删除post,但未来对api的调用不会反映出来。