bob*_*bek 2 authentication facebook facebook-authentication
我试图让用户在进入我网站的某些部分时重新输入密码。我读过我应该使用“重新验证”授权类型来解决这个问题,但我遇到了两个问题。
当用户单击“重新验证”按钮时,密码已在“密码”输入框中填写。
当用户单击“重新验证”按钮然后关闭或单击授权窗口上的取消时,我仍然使用登录数据返回响应,并且基本上它“告诉”我的代码用户已登录。
有没有人遇到过这些问题?这是我的代码的一部分:
<fb:login-button id="facebook-reauth" onclick="return false;">Login with Facebook</fb:login-button>
<script type="text/javascript">
$(document).ready(function () {
document.getElementById('facebook-reauth').onclick = function () {
FB.login(function (response) {
if (response) {
window.location = '/Account/FacebookLogin?isCheckout=false';
}
else {
window.location = '/';
}
}, { scope: 'email', auth_type: 'reauthenticate' });
};
});
</script>
Run Code Online (Sandbox Code Playgroud)
编辑:
我尝试更改<fb:login-button />to<div />标记,但它根本没有帮助。
非常感谢!
密码字段可能是预先填写的,因为您的浏览器只会为您记住密码,请尝试在浏览器中清除该密码,或者尝试使用浏览器不记得的其他电子邮件。
我认为您只是忘记检查response.authResponse,所以它可能应该是:
.
FB.login(function (response) {
if (response.authResponse) {
window.location = '/Account/FacebookLogin?isCheckout=false';
}
else {
window.location = '/';
}
}, { scope: 'email', auth_type: 'reauthenticate' });
Run Code Online (Sandbox Code Playgroud)
是的,您是对的,即使用户取消重新认证,也会执行回调并且状态为“已连接”。
这可能是一个错误或其他问题,但从我现在所做的测试来看,如果用户成功完成重新身份验证过程,那么令牌就会发生变化,因此这可能会起作用:
var oldToken = FB.getAccessToken();
FB.login(function (response) {
if (response.authResponse && response.authResponse.accessToken != oldToken) {
window.location = '/Account/FacebookLogin?isCheckout=false';
}
else {
window.location = '/';
}
}, { scope: 'email', auth_type: 'reauthenticate' });
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3122 次 |
| 最近记录: |