Facebook javascript登录与publish_actions对话无法正常工作

时间:2014-04-26 21:44:53

标签: javascript facebook facebook-javascript-sdk facebook-login

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

这里有一个更详细的解释:

  • A'使用Facebook登录'按钮显示publish_actions范围。
  • 单击该按钮可打开Facebook登录屏幕(如果未登录)。
  • 登录后(或已登录),会出现basic_info权限屏幕,说明该APP将收到以下信息:您的公开个人资料和好友列表。'
  • 点击'好的'导致好的'按钮被禁用但不进入扩展权限对话框。

如果我关闭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'));

1 个答案:

答案 0 :(得分:1)

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

我正在使用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;
});

问题解决了!