带有publish_actions对话框的Facebook javascript登录不起作用

Facebook javascript login with publish_actions dialogue not working

本文关键字:Facebook javascript 登录 不起作用 对话框 publish actions 带有      更新时间:2023-09-26

我正在构建一个简单的应用程序,用户可以通过Facebook登录并为产品撰写评论。当我使用publish_actions扩展权限范围进行初始登录时,登录对话框在basic_info步骤之后冻结。

以下是对正在发生的事情的更详细的解释:

  • publish_actions范围内会显示"使用Facebook登录"按钮
  • 单击该按钮将打开Facebook登录屏幕(如果未登录)
  • 登录后(或者如果已经登录),会出现basic_info权限屏幕,说明"应用程序将收到以下信息:您的公共档案和朋友列表。"
  • 单击"OK"将禁用"OK"按钮,但不会继续进行扩展权限对话框

如果我关闭Facebook登录窗口并再次单击登录按钮,我将看到扩展权限对话框,我可以完成登录。完成登录后,我可以继续,我的应用程序的其余部分也能正常工作。

我已经检查了控制台的错误,无论是Facebook登录窗口还是我的应用程序窗口都没有。

我还尝试过使用Facebook登录按钮和将FB.login附加到元素。两种方法产生的结果相同。在基本权限步骤中单击"确定"后,登录对话框将冻结。

关于如何让它登录对话进入最后的扩展权限步骤,有什么想法吗?

JS

// Additional JS functions here
window.fbAsyncInit = function() {
  FB.init({
    appId      : 'MY APP ID',
    status     : true,
    cookie     : true,
    xfbml      : true
  });
};
// Load the SDK Asynchronously
(function(d, s, id){
 var js, fjs = d.getElementsByTagName(s)[0];
 if (d.getElementById(id)) {return;}
 js = d.createElement(s); js.id = id;
 js.src = "//connect.facebook.net/en_US/all.js";
 fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));

在尝试其他事情时偶然发现了一个解决方案。

我使用的Facebook登录按钮如下:

<div
    id="fblogin"
    class="fb-login-button"
    data-show-faces="false"
    data-width="200"
    data-max-rows="1"
    data-scope="publish_actions"
    login_text="Login to Review" >
</div>

这将打开Facebook登录对话框,但在初始权限步骤后会停止,并且不会继续我请求的扩展权限。

事实证明,如果我在用户单击按钮时调用FB.login劫持了Facebook登录,并添加了return: false;,权限对话框就会正常工作。

$('#fblogin').click(function(){
    FB.login(function() {
    }, {scope: 'publish_actions'});
    return false;
});

问题解决了!