通过 Facebook 评论社交插件登录不会触发事件?

Posted

技术标签:

【中文标题】通过 Facebook 评论社交插件登录不会触发事件?【英文标题】:Login via Facebook comments social plugin does not trigger an event? 【发布时间】:2014-03-22 00:30:29 【问题描述】:

我正在尝试将 Facebook 的 javascript SDK 登录/注销按钮 (https://developers.facebook.com/docs/facebook-login/login-flow-for-web) 与 Facebook 的 cmets 插件 (https://developers.facebook.com/docs/plugins/comments/) 一起使用。我的代码如下:

<div id="fb-root"></div>

<script>
  window.fbAsyncInit = function() 
  FB.init(
    appId      : '############',
    status     : true, // check login status
    cookie     : true, // enable cookies to allow the server to access the session
    xfbml      : true  // parse XFBML
  );

  ;

  // Load the SDK asynchronously
  (function(d)
   var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
   if (d.getElementById(id)) return;
   js = d.createElement('script'); js.id = id; js.async = true;
   js.src = "//connect.facebook.net/en_US/all.js";
   ref.parentNode.insertBefore(js, ref);
  (document));
</script>

// Facebook login button
<div class="fb-login-button" data-max-rows="1" data-size="medium" 
     data-show-faces="false" data-auto-logout-link="true">
</div>

// Facebook comments plugin
<div class="fb-comments" data-href="##########" data-numposts="5" 
     data-colorscheme="light" social="true">
</div>

这两个功能单独工作,但如果用户通过单击 cmets 框内的“comment using... Facebook”按钮登录,登录按钮不会更改为注销按钮。

FB.Event.subscribe 提供了一种检测登录事件的机制,但是当用户使用它登录时,cmets 插件似乎不会触发任何事件。

有谁知道当用户使用 cmets 插件登录时如何将主登录按钮更改为注销按钮?

【问题讨论】:

【参考方案1】:

以下是 Facebook 的回复:

目前这种行为是设计使然。社交插件旨在涵盖我们开发人员的大多数用例,而 cmets 插件的一般用例是未明确集成 Facebook 登录的网站,因此 cmets 插件不提供登录事件。

但是,由于用户的登录仅在他们尝试发表评论时触发,因此对于已注销的用户,您应该为您的 JS SDK 实现订阅“comment.create”事件而不是登录事件。在这种情况下,如果需要,您可以触发页面刷新以显示“注销”按钮。

我确实尝试将刷新操作附加到 comment.create 事件,但该事件仅在用户实际发布评论时触发,而不是在他们登录 cmets 插件时触发。总而言之,非常令人失望。

【讨论】:

以上是关于通过 Facebook 评论社交插件登录不会触发事件?的主要内容,如果未能解决你的问题,请参考以下文章

获取“Facebook 评论”小部件/社交插件的高度

URL 更改后的 Facebook 社交插件评论

如何在 iPhone 中阅读 Facebook 社交插件中的内容?

Facebook评论框移动版未调整大小

Facebook 社交插件和 jQuery 问题

Android Facebook 登录回调永远不会触发