1

当我单击我的 FB 登录按钮时,会弹出 FB 身份验证对话框。在我输入我的 FB 凭据后,对话框会重定向到这样的 url:

https://www.facebook.com/dialog/permissions.request?wholeBunchOfQueryParameters

或者,如果我已经登录 FB,弹出对话框是:

https://www.facebook.com/dialog/oauth?wholeBunchOfQueryParameters

但那些是保持打开状态的空白对话框。一旦我关闭对话框,回调就会发生,但直到那时才会发生。这是 IE 和 Chrome 上的行为。

我确实有这个工作正常,我认为当我有一台新电脑时它停止工作,所以它可能是环境问题。我认为从那时起它就起作用了,但也许没有。我恢复到我的代码版本,它正在工作,它也不再工作,因此进一步表明它是环境的,但我不知道它可能是什么。我可能会在杂草中离开。

另外,还有一点信息,我正在本地开发,所以我使用的是 localhost:port。我对这个问题进行了大量研究,确实看到有人说使用 127.0.0.1 而不是 localhost 所以我也尝试过,但没有任何区别。

知道为什么对话框不会关闭吗?

<fb:login-button perms="email,user_checkins" onlogin="afterFacebookConnect();" 
   autologoutlink="false" ></fb:login-button>
<div id="fb-root" style="display:inline; margin-left:20px;"></div>

<script language="javascript" type="text/javascript">
window.fbAsyncInit = function () {
    FB.init({ appId: 'myAppId',
        status: true, cookie: false, xfbml: true
    });
};

function afterFacebookConnect() {
    FB.getLoginStatus(function (response) {
        alert("Hi");
        var access_token = FB.getAuthResponse()['accessToken'];
        if (response.authResponse) {
            window.location = "../Account/FacebookLogin?token=" +
                   access_token;
        } else {
            alert(FB.getAuthResponse);
        }
    });
};
function logout() {
    FB.getLoginStatus(function (response) {
        var access_token = FB.getAuthResponse()['accessToken'];
        if (response.authResponse) {
            window.location = "../Account/Logout";
        } else {
            // user clicked Cancel
        }
    });    
};
$(document).ready(function () {
    if (document.getElementById('fb-root') != undefined) {
        var e = document.createElement('script');
        e.type = 'text/javascript';
        e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
        e.async = true;
        document.getElementById('fb-root').appendChild(e);
    }
});
</script> 
4

1 回答 1

0

这是最近几天出现的一个已知错误(请参阅https://developers.facebook.com/bugs/241915819261223)。

好消息是 FB 的一位工程师刚刚声明了以下内容,所以我们应该很快就会看到这个问题得到解决:

我们对此问题进行了修复,并将很快推出。敬请关注。

于 2012-07-01T02:41:14.080 回答