我正在使用 js sdk 使用<fb:login-button></fb:login-button>
按钮登录
当我点击页面上的“登录”按钮时,弹出框出现并迅速消失。
我发现这里的另一个线程 Facebook 登录窗口出现并很快消失
这解释了它的发生是因为用户已经登录到 facebook。我的问题是,我该如何解决这个问题?如果他们已经登录到 facebook,我如何确保弹出窗口不只是出现和消失?
我正在使用 js sdk 使用<fb:login-button></fb:login-button>
按钮登录
当我点击页面上的“登录”按钮时,弹出框出现并迅速消失。
我发现这里的另一个线程 Facebook 登录窗口出现并很快消失
这解释了它的发生是因为用户已经登录到 facebook。我的问题是,我该如何解决这个问题?如果他们已经登录到 facebook,我如何确保弹出窗口不只是出现和消失?
您可以使用 FB.getLoginStatus 检查用户的登录状态。
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 方法,因此登录窗口不会闪烁。在任何其他情况下,它将显示登录窗口,这是预期的结果。