2012-03-26 88 views
5

我不明白一件事..如何識別通過Facebook api登錄的用戶?

在我的網站上有一個按鈕,從Facebook的api JS SDK的FB.login方法。

當用戶第一次訪問我的網站,點擊按鈕 - 得到他的Facebook的個人資料中的數據,然後我們就在我在數據庫服務器上檢查是否有用戶用這個ID,還是沒有?如果不行 - 寫一個新行。我們也在我的網站上創建用戶的個人資料。

現在的問題,當用戶下一次訪問(上一個按鈕,點擊,如果他沒有登錄)我們的網站 - 如何識別他與他在我們網站上的個人資料結合起來?例如,向他出示了他的個人資料,或者他可以在它改變什麼......

在平時的授權,我們比較的密碼和用戶的數據庫登錄,這裏是沒有這種可能。 AccessToken始終在變化。以爲只是檢查用戶的FB ID,但也許,任何人都可以替換他的FB ID,然後輸入他的個人資料,不是嗎?

什麼名堂在這種情況下使用?

回答

6

不管用戶訪問您的網站第一次還是不是你一直使用的FB.login方法。此方法驗證用戶是否與您的應用程序有關係,並在用戶接受您的應用程序時爲您提供訪問令牌。

當使用Facebook登錄認證用戶時,用戶在數據庫中註冊時不包含密碼,您只有facebookid才能將facebook帳戶與您的網站配置文件相關聯。可以使用服務器端FB.login方法提供的accesstoken或通過使用下一個示例facebook docs所示的javascript來獲取facebook id。

FB.login(function(response) { 
if (response.authResponse) { 
    console.log('Welcome! Fetching your information.... '); 
    FB.api('/me', function(response) { 
     console.log('Good to see you, ' + response.name + '.'); 
    }); 
} else { 
    console.log('User cancelled login or did not fully authorize.'); 
} 
}); 

在響應對象中,您可以獲取facebook id(response.id)。

1

您可以使用Facebook ID來識別用戶在數據庫中,這是每一個Facebook的用戶是唯一的。

+4

任何人都可以用這個ID替換我的網站上的用戶ID配置文件? – Denis 2012-03-26 17:11:20

3

如果查詢圖形API https://graph.facebook.com/me?access_token=USER_ACCESS_TOKEN您將獲得UID,然後用你的數據庫進行比較。 您正在使用Javascript API,因此您應該使用FB.getLoginStatus方法來獲取已連接用戶的UID。

https://developers.facebook.com/docs/reference/javascript/FB.getLoginStatus/

此方法是默認初始化與FB.init的SDK(:真正的狀態)時運行。它使您的網站能夠識別已連接的用戶。

https://developers.facebook.com/docs/reference/javascript/FB.init/

+0

非常感謝! :) – Denis 2012-03-26 17:18:09

+0

嘗試通過獲取他的狀態來識別用戶,UX將隨個性化內容而大大提高。 – Alexcode 2012-03-26 17:22:14