Twitter和Facebook分享带有回调函数?

16
我已经在我的网站上实现了Facebook和Twitter分享功能。当用户点击Twitter或Facebook分享按钮时,他们会被重定向到以下URL。
Facebook分享链接: http://www.facebook.com/sharer.php?u='+encodeURIComponent(location)+'&t='+encodeURIComponent(text)
Twitter分享链接: http://twitter.com/share?url='+location+'&text='+text
如果有人通过Twitter分享内容,我希望能够将用户名和推文链接存储到我的数据库中;如果有人通过Facebook分享内容,我希望能够将Facebook个人资料链接和姓名存储到我的数据库中。是否可能在某人成功完成分享过程后检索这些数据?

请查看 Twitter 的相关信息,访问以下链接:https://dev59.com/lW445IYBdhLWcg3wR4NN - Edgar Kenji Tanaka
你好!有没有找到Twitter推文回调的解决方案? - Mayur Kukadiya
4个回答

18

Facebook的JavaScript API允许您分享并提供回调函数。

http://developers.facebook.com/docs/reference/javascript/FB.ui/

FB.ui(
   {
     method: 'feed',
     name: 'Facebook Dialogs',
     link: 'http://developers.facebook.com/docs/reference/dialogs/',
     picture: 'http://fbrell.com/f8.jpg',
     caption: 'Reference Documentation',
     description: 'Dialogs provide a simple, consistent interface for applications to interface with users.',
     message: 'Facebook Dialogs are easy!'
   },
   function(response) {
     if (response && response.post_id) {
       alert('Post was published.');
     } else {
       alert('Post was not published.');
     }
   }
 );

要使用这个功能,您需要先设置一个 Facebook 应用,并将以下代码直接放置在开头的 body 标签之后。

<div id="fb-root">
</div>
<script src="http://connect.facebook.net/en_US/all.js" type="text/javascript"></script>
<script type="text/javascript">
    FB.init({
        appId: YOUR_API_KEY,
        status: true,
        cookie: true,
        xfbml: true
    });
    FB.Canvas.setAutoResize();
</script>

如果您请求基本权限,那么您可以获取用户的Facebook ID,并使用它来存储哪些用户已经分享过。


FB JS 代码可以放在你的代码任何地方,头部、底部、主体中都可以。唯一需要紧跟在 body 标签后面的是 div。 - user910533
你可以把这个 div 放在任何地方,它都能正常工作。 - Michael J. Calkins
我需要拥有这个应用程序,但我不能分享那些在应用程序中不允许的链接。 - indapublic
1
@Tom 那 Twitter 回调怎么样? - Pardeep Jain
嗨@TOm,上面的答案给出了错误信息:无效的应用程序ID:提供的应用程序ID看起来不像是有效的应用程序ID。 - shivashankar m

14

对于带有回调函数的Twitter调用,以下是我在Javascript中的实现方式:

// Include the Twitter Library
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="https://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"));

// On ready, register the callback...
twttr.ready(function (twttr) {
    twttr.events.bind('tweet', function (event) {
        // your callback action here...
    });
});

推特的链接是这样的:
      <a href="https://twitter.com/intent/tweet?url=URLTOBESHARED">Share on Twitter</a>

参考文献:https://dev.twitter.com/docs/intents/events

该文档介绍了Twitter意图事件,这是一种通过Web应用程序向Twitter用户发送消息的方式。使用此功能,您可以创建自定义消息,例如邀请用户参加您的活动或分享有趣的链接。要使用此功能,您需要在Twitter开发者门户网站上注册并获取API密钥。


这个链接的一堆参数:https://dev.twitter.com/docs/intents#tweet-intent - Michael J. Calkins
谢谢 谢谢 谢谢 谢谢 谢谢 - Umair Ayub
1
@tauan-scheidt-zimmermann 回调函数无法正常工作。推文后没有响应,请您检查一下吗? - Awlad Liton
请您能否提供一些相关的工作示例? - Pardeep Jain

0

Facebook 的更新分享对话框带有回调函数(来源:https://developers.facebook.com/docs/sharing/reference/share-dialog)。

https://www.facebook.com/dialog/share?
 app_id=145634995501895
 &display=popup
 &href=https%3A%2F%2Fdevelopers.facebook.com%2Fdocs%2F
 &redirect_uri=https%3A%2F%2Fdevelopers.facebook.com%2Ftools%2Fexplorer

您必须提供一个app_id,并且redirect_uri必须在您的应用程序域名白名单中。


0

一旦您打开FB分享窗口,用户是否发布内容取决于他自己。没有回调函数,也不可能知道他是否完成了该过程。

您可能希望实现FB连接并创建自己的表单,在用户填写字段后将其发布到用户的墙上(您还可以选择将它们保存在您的数据库中)。

我不知道Twitter是否提供您所请求的功能,但我会选择与上述相同的解决方案。


1
有一个关于推文按钮回调的开放功能请求:http://code.google.com/p/twitter-api/issues/detail?id=1835 - abraham
2
这可能是一个过时的评论。本页面上的另一个答案提供了一个可行的回调解决方案,而这个答案声称没有。 - gcdev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接