2012-01-26 37 views
0

我們讓用戶/公司將他們的Facebook帳戶添加到我們的系統中,並且我們讓他們在添加帳戶後驗證這些帳戶,以便我們可以獲取詳細信息否則公開。所以我們需要告訴用戶哪個帳戶進行身份驗證,這可能嗎? 假設用戶已經登錄到賬戶x的Facebook,然後他登錄到我們的應用程序,並選擇驗證帳戶Y,所以他將點擊Y的驗證鏈接並繼續進行驗證,是否有用戶認證Y有無論如何我可以讓用戶驗證一個指定的帳戶

回答

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'});   
});  
0

是的,你會希望在你的頁面上有註銷功能。由於它是不清楚的你是如何實現你的登錄按鈕,我就舉一個例子:

做一個服務器端302將用戶重定向到https://www.facebook.com/logout.php?next=YOUR_URL&access_token=ACCESS_TOKEN

下=將是位置,其中用戶可以點擊登錄到帳戶Ÿ

您的特定需求,你可以在這裏研究:https://developers.facebook.com/docs/authentication/

+0

但是我怎麼強制用戶必須驗證Y和不是別的?我發現這是不可能的,我可以驗證哪些帳戶用戶只有經過身份驗證後才進行身份驗證。例如在上面的例子中,註銷後用戶可以再次登錄/認證X賬戶而不是Y.我想我必須在用戶通過身份驗證後檢查這一點,他確實已經對賬戶Y進行了身份驗證,而不是其他一些其他應用程序 –

+0

您應該登錄您的數據庫,並在什麼時間登錄,並使用它來檢查是否將其作爲X重新登錄。如果是,則直接將它們發送到logout.php,而不是顯示它們的內容。 – DMCS

相關問題