2011-05-26 106 views
1

我添加臉書一次登錄到我的網站。只是想從已經實施它的人那裏得到一些反饋。臉書一次登錄認證

目前我允許用戶使用fb:login登錄我的網站,假設他們在fb上有一個有效的帳戶併成功登錄,如果從fb返回的相同電子郵件地址與我自己持有的電子郵件地址相匹配數據庫,他們會自動登錄到我的網站。

我遇到的問題是,我發現硬只有電子郵件作爲我的用戶和我的網站之間的主要身份驗證。對於那些已經破壞了這一點的人,你可以請你分享一些關於如何在用戶登錄到你的網站時驗證用戶的邏輯(理論)。

+0

不明白你的意思,用戶給它的電子郵件ID,你匹配你持有的電子郵件ID和用戶給出的FB?你如何做登錄?你能解釋一下嗎?你沒有使用fb:login? – 2011-05-26 05:39:40

+0

嗨,謝謝你的回覆。是的,我使用的是fb:login,一旦用戶使用他們的fb帳戶詳細信息登錄,我有一個getProfile方法來獲取他們的電子郵件地址。然後我嘗試將fb的獲得的電子郵件地址與我在數據庫中的電子郵件地址相匹配。 問題是,這是其他人正在做的或者是否應該執行其他檢查,例如查看其他參數,cookie等。 – 2011-05-26 08:29:31

回答

0

我有和你一樣的問題。我的數據庫中有用戶名和電子郵件地址,我想添加Facebook連接插件。

現在,在登錄頁面上,我讓用戶選擇標準和Facebook登錄。如果一個人選擇Facbook登錄我檢索與Facebook的PHP SDK他的Facebook ID(see on github):

$facebook = new Facebook(...); 
$id = $facebook->getUser(); 
  • 如果我在我的記錄有這個Facebook的ID,我登錄的用戶

  • 。如果沒有,我找回了自己的電子郵件地址:

    $profile = $facebook->api('/me'); 
    $email = $profile['email']; 
    
    • 如果我有我的數據庫了該郵件,我將facebook ID存儲在該記錄中(下次使用),然後我將用戶登錄。

    • 如果不是,我使用Facebook ID和電子郵件創建一條新記錄。之後,用戶可以在他的設置中設置密碼,以便能夠使用標準登錄(無Facebook)登錄。

您可能要檢查example of the Facebook PHP SDK,以便更好地瞭解流動的作品。

希望有所幫助。

+0

謝謝quentin多數民衆贊成我正是需要 – 2011-05-30 11:51:34

+0

任何時候:)你可以聯繫我(通過我的個人資料)如果你在這個過程中有任何問題。我去過那兒。 – Quentin 2011-05-30 12:00:20

0

我也做到了這一點。我現在已經明白,你想要匹配的電子郵件地址,如果用戶更改他的電子郵件地址,你想更新它。其簡單的解決方案是將用戶信息存儲在數據庫中。我所做的,我存儲由facebook作爲用戶名返回的用戶配置文件ID,並將其轉換爲md5我存儲了與用戶返回的密碼和電子郵件地址相同的配置文件ID。現在,每個Facebook用戶在我的數據庫中都有其唯一的ID。每當用戶來到我的網站並登錄Facebook,有兩種情況

1-我比較配置文件id與我的數據庫,如果找到記錄,我總是更新由Facebook返回的特定字段中的電子郵件地址..現在我可以擁有用戶的最新電子郵件地址。
2-如果用戶不在我的數據庫中,則通過應用上述方法插入記錄。

希望它能幫助你

+0

雖然這不是我所期待的,但感謝您將它分享爲iive甚至不是儘管關於這種可能性和不幸也在執行。我想知道的是,用戶通過fb:login使用他們的fb賬戶詳細信息登錄後,除了檢查他們的電子郵件地址以外,如何檢查數據庫中的同一用戶? – 2011-05-26 09:58:05

+0

@ david-l我只是檢查用戶是否在我的數據庫,然後我不比較電子郵件地址,我只是更新該用戶的行。如果用戶不在我的數據庫然後我插入他的記錄在我的數據庫hainvg個人資料ID作爲用戶名,密碼和他的電子郵件地址 – 2011-05-26 10:09:41