gpt4 book ai didi

javascript - Facebook API - javascript sdk : status shows 'connected' after logout

转载 作者:行者123 更新时间:2023-11-30 21:09:19 25 4
gpt4 key购买 nike

我在 AngularJS 网站中使用用于 javascript 的 Facebook SDK。

我正在尝试使用 Facebook 登录预填写注册表。第一次出现 facebook 模式,我输入我的信息,它登录并按预期获得我需要的数据。

然后我完成注册,登录系统。并注销系统,同时执行 Facebook 注销。

然后我回去创建第二个注册,希望用不同的 facebook 帐户测试注册......

但是当我点击 Facebook 登录以预填写表单时,SDK 没有再次显示 Facebook 登录模式让我输入新的登录,而是使用我以前的数据执行了登录。

当我去查看原因时,我发现Facebook状态显示“已连接”。我原以为会断开连接,因为我已经成功执行了 facebook 注销。

我的假设错了吗?如何断开第一个用户的连接,以便在我第二次注册时能够使用不同的 Facebook 帐户?

要登录,我正在使用:

var deferred = $q.defer();
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
console.log('already logged in.');
deferred.resolve(response);
}
else {
FB.login( function(response) {
if (response.authResponse) {
console.log('response: ' + JSON.stringify(response));
var access_token = response.authResponse.accessToken;
console.log('access token: ' + access_token);
console.log('Welcome! Fetching your information.... ');
deferred.resolve(response);
} else {
console.log('User cancelled login or did not authorize.');
deferred.reject('Error occured');
}
}, {
scope: 'public_profile, email, user_birthday',
return_scopes: true
});
}
});
return deferred.promise;

我的注销是这样的:

var deferred = $q.defer(); 
FB.logout(function(response) {

// I've tried with and without this line of code:
FB.Auth.setAuthResponse(null, 'unknown');

console.log('FB service logged out');
deferred.resolve(response);
});
return deferred.promise;

来自这个引用 Facebook JS SDK FB.logout() doesn't terminate user session我尝试在注销后使用 FB.Auth.setAuthResponse(null, 'unknown');,但它对我不起作用。

最佳答案

我遇到了类似的问题,并通过在调用 API 的用户配置文件中添加 Facebook 断开连接按钮解决了这个问题:

DELETE /{user-id}/permissions/

https://developers.facebook.com/docs/graph-api/reference/user/permissions/

例如使用 Javascript SDK:

// remove permission, so that the user is asked to authenticate the app again
// or another user can login on the top right of the login popup

FB.api('/me/permissions', 'delete', {
access_token: user.accessToken // use existing token from database
}, (r) => {
if(r.success) user.accessToken = null; // remove token in database
});

关于javascript - Facebook API - javascript sdk : status shows 'connected' after logout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46295455/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com