无论如何,我可以要求用户验证指定的帐户

时间:2012-01-26 08:27:06

标签: facebook authentication oauth-2.0

我们让用户/公司将他们的Facebook帐户添加到我们的系统中,我们让他们在添加后对这些帐户进行身份验证,这样我们就可以获得非公开的详细信息。所以我们需要告诉用户要对哪个帐户进行身份验证,这可能吗? 假设用户已经使用帐号x登录到facebook,然后他登录到我们的应用程序并选择对帐户Y进行身份验证,那么他将点击Y的身份验证链接并继续进行身份验证,无论如何都要用户对Y进行身份验证。

2 个答案:

答案 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/