我在AngularJS网站上使用Facebook sdk for javascript。
我正在尝试使用Facebook登录信息填写注册表单。在第一次,facebook模式出现,我输入我的信息,它登录,我得到我需要的数据,如预期的那样。
然后我完成注册,登录系统。并注销系统,同时还执行Facebook注销。
然后我回去创建第二次注册,希望用不同的Facebook帐户测试注册...
但是当我点击Facebook登录以预先填写表格时,我没有再次显示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');
,但它对我不起作用。
答案 0 :(得分:1)
我遇到了类似的问题,并通过在用户配置文件中有一个Facebook断开连接按钮来调用该API来解决了这个问题:
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
});