我正在使用JS SDK通过 <fb:login-button></fb:login-button>
按钮进行登录。
当我在页面上点击“登录”按钮时,弹出框会很快地出现并消失。
我在这里找到了另一个帖子: Facebook login window appears and disappears very quickly
该帖子解释了这是因为用户已经登录了Facebook。我的问题是,我该如何解决这个问题? 如果他们已经登录了Facebook,我该如何确保弹出框不会出现并消失?
我正在使用JS SDK通过 <fb:login-button></fb:login-button>
按钮进行登录。
当我在页面上点击“登录”按钮时,弹出框会很快地出现并消失。
我在这里找到了另一个帖子: Facebook login window appears and disappears very quickly
该帖子解释了这是因为用户已经登录了Facebook。我的问题是,我该如何解决这个问题? 如果他们已经登录了Facebook,我该如何确保弹出框不会出现并消失?
https://developers.facebook.com/docs/reference/javascript/FB.getLoginStatus/
如果用户未登录,您可以显示一个(自定义的)登录按钮。我想用实际代码来补充FWrnr的答案,因为这确实非常有帮助。
解决方案就是他所说的FB.getLoginStatus函数:
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
window.location = //redirect to page with logged user (you have the response token in response)
} else {
//Show the login popup
FB.login(function(response) {
if (response.authResponse) {
window.location = //redirect to location after correct login
}
}, { scope: '<scopes>', state: '<state>' });
}
});
这样,如果用户已“连接”(已登录并授权应用程序),则不会调用FB.login方法,因此登录窗口不会闪烁。在任何其他情况下,都将显示登录窗口,这是预期的结果。