我们让用户/公司将他们的Facebook帐户添加到我们的系统中,我们让他们在添加后对这些帐户进行身份验证,这样我们就可以获得非公开的详细信息。所以我们需要告诉用户要对哪个帐户进行身份验证,这可能吗? 假设用户已经使用帐号x登录到facebook,然后他登录到我们的应用程序并选择对帐户Y进行身份验证,那么他将点击Y的身份验证链接并继续进行身份验证,无论如何都要用户对Y进行身份验证。
答案 0 :(得分:1)
对我来说,解决方案是,先检查用户是否已登录facebook,然后使用FB.logout注销。然后打开登录对话框(FB.login),以便他们可以登录到所需的帐户。成功登录后,请检查登录用户是否与单击的链接相同。
整体代码有点像这样
$('.fb-login').live('click', function() {
var accountName = $(this).attr('id');
//if user is already logged in, logout him so that he can authenticate correct account
FB.getLoginStatus(function(response) {
console.log(response);
if (response.status === 'connected') {
FB.logout(function(resp) {
console.log("Logged out of facebook")
});
}
}, true);
FB.login(function(response) {
if (response.authResponse) {
var accessToken = response.authResponse.accessToken;
console.log(response);
console.log('Fetching FB account information.... ');
FB.api('/me', function(response) {
console.log('Account name, ' + response.username + '.');
//validate that user authenticated the same account as the link he clicked on
if(accountName == response.username || accountName == response.id) {
//save token
} else {
//show error
}
});
} else {
console.log('User cancelled login or did not fully authorize.');
}
}, {scope: 'perms'});
});
答案 1 :(得分:0)
是的,您需要在页面上注销功能。由于目前还不清楚你如何实现登录按钮,我将举一个例子:
服务器端302是否将用户重定向到https://www.facebook.com/logout.php?next=YOUR_URL&access_token=ACCESS_TOKEN
next =将是用户可以点击登录帐户Y的位置
根据您的具体需求,您可以在此处进行研究:https://developers.facebook.com/docs/authentication/