我们有一个像这样的FB.login调用:
FB.login(function (response) {
if (response.status === 'connected') {
responseFunction(response.authResponse.userID);
} else {
responseFunction(null);
}
}, { scope: requiredPermissions.concat(optionalPermissions).join(','), return_scopes: true });
如果用户尚未连接到应用程序,它会正确检测已取消的登录。但是,如果用户在取消登录时已经连接,则response
如下所示:
authResponse: {
accessToken: "token",
data_access_expiration_time: 1560437437,
expiresIn: 86963,
reauthorize_required_in: 7776000,
signedRequest: "bababa",
userID: "userid"
},
status: "connected"
几乎完全像一个成功的登录响应。幸运的是,如果登录已正确完成(由于grantedScopes
选项),响应中还有一个return_scopes
字段。但是,使用它来区分2似乎不可靠和hacky。
有没有更好的办法?
先感谢您!
更新:为什么不使用FB.getLoginStatus?
对于上下文:在我的情况下,FB.login用于被授予访问用户页面的权限。它本身并不用于将它们登录到应用程序中。
如果有人在我的推理中指出错误,我会很高兴。这里是:
这就是按钮单击处理程序立即调用FB.login的原因。它有助于避免上述两个问题。
我最终使用grantedScopes
作为响应的存在作为完整登录的指示。