从Facebook权限取消对话框重定向并且不会关闭

时间:2012-04-05 14:31:33

标签: facebook login permissions

我正在尝试使用Javascript将Facebook登录功能添加到我的网站。 我已经调用了FB.init和FB.login并获得了预期的弹出窗口,要求我使用我的Facebook凭据登录。对FB.login的调用请求user_birthday和电子邮件权限,所以我也得到了要求我允许这些权限的预期对话框。如果我接受,登录工作和控制将返回到我的父页面。

如果我不接受权限(点击取消按钮),接下来发生的事情似乎不一致。我希望弹出窗口会消失并将控制权返回给父窗口,然后父窗口就可以处理被拒绝的响应。最后,我想给我的用户一条消息,告诉他们取消时会发生什么。

相反,我有时会看到弹出窗口重定向到您直接登录Facebook时看到的主Facebook页面。有时弹出窗口变为空白并且只是坐在那里(它指向我在FB.init调用中指定的ChannelUrl页面)。在这两种情况下,在手动关闭弹出窗口之前,控件不会返回到父页面。

示例代码:

<html>
<body>
<div id="fb-root"></div>
<script language="Javascript">
window.fbAsyncInit = function() {
    FB.init({
        AppId      : 'XXXXXXX',
        channelUrl: 'http://www.mydomain.com/channel.html', //custom channel
        status: true,
        cookie: true, 
        xfbml:  true,
        oauth: true
  });

};

// 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))

function fbLogin()
{
    FB.login(function (response){
        if (response.authResponse) {
            Debug("Auth Logged in");
        }
        else
        {
            Debug("Auth failed");
        }
    }, {scope:'user_birthday,email'});
}

function Debug(psMessage)
{  // something to provide feedback on what happened...
    var objDebug = document.getElementById("Debug");
    var objDate = new Date();
    var sTime = objDate.getHours() + ":" + objDate.getMinutes() + ":" + objDate.getSeconds();
    objDebug.innerHTML = sTime + " - " + psMessage + "<br>" + objDebug.innerHTML;
}
</script>
<form>
<input type="button" value="Log in" onClick="fbLogin();">
<br>
<br>
<br>
<br>
<div id="Debug"></div>
</form>

</body>
</html>

我尝试过各种各样的事情。我删除并创建了一个新的应用程序。我创建了channelUrl参数(它只包括 <script src="//connect.facebook.net/en_US/all.js"></script>)。

有没有人对我做错了什么有任何见解(这似乎至少在Windows XP上的IE8,Safari 5.0.5和Firefox 11.0中都有发生)?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我知道这是一个老线程,但希望我的解决方案可以帮助那些面临同样问题的人。

  1. 如果您使用旧的Facebook Apps信息中心,请停用您的沙盒模式。

  2. 如果您使用新的Facebook Apps信息中心,请点击状态和评论(位于左侧边栏),然后将“...可供普通公众”从“否”更改为“是”。

  3. 希望这可能会有所帮助。古德勒克;)