【问题标题】:Twitter and facebook share with callbacks?Twitter 和 facebook 与回调共享?
【发布时间】:2011-06-26 04:31:59
【问题描述】:

我已经在我的网站上实现了 facebook 和 twitter 共享。当用户点击 twitter 或 facebook 分享按钮时,他们会被重定向到以下 URL。

http://www.facebook.com/sharer.php?u='+encodeURIComponent(location)+'&t='+encodeURIComponent(text)

http://twitter.com/share?url='+location+'&text='+text

当有人通过 twitter 获取内容时,如果可能的话,我想将用户名和推文链接存储在我的数据库中,并且当有人通过 facebook 分享内容时,我想存储 facebook 个人资料 url 和名称。当有人成功完成共享过程后,是否可以检索该数据?

【问题讨论】:

标签: facebook twitter


【解决方案1】:

对于 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 必须在您的应用程序域中列入白名单。

【讨论】:

    【解决方案2】:

    对于带有回调的 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

    【讨论】:

    • 这个链接的一堆参数:dev.twitter.com/docs/intents#tweet-intent
    • 感谢感谢感谢感谢感谢
    • @tauan-scheidt-zimmermann 回调不起作用。推特后没有回应..你能检查一下吗?
    • 能否请您发布一些相同的工作示例?
    【解决方案3】:

    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 应用程序并将以下代码直接放在开头的正文标记之后

    <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。
    • 你可以把 div 放在你想要的任何地方,它可以工作。
    • 我需要申请,申请中不允许的链接我不能分享。
    • @Tom 和 Twitter 回调呢?
    • 嗨@TOm 上面给出的错误是 Invalid App ID: The provided app ID does not look like an valid app ID.
    【解决方案4】:

    一旦您打开 FB 分享窗口,是否发布内容由用户决定。没有回调函数,也不知道他是否完成了进程。

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

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

    【讨论】:

    猜你喜欢
    • 2012-03-20
    • 1970-01-01
    • 2011-10-18
    • 1970-01-01
    • 2013-04-13
    • 2013-07-12
    • 2014-07-28
    • 1970-01-01
    • 2011-06-22
    相关资源
    最近更新 更多