簡體   English   中英

社交登錄整合

[英]Social login integration

我需要將社交登錄名添加到已經有一個非常簡單的用戶系統的站點,它僅存儲電子郵件和密碼,僅此而已。 我需要添加facebook和twitter登錄選項,但是我很難弄清楚如何將其與當前系統集成,因為它在email具有唯一索引,因此當用戶嘗試使用社交帳戶登錄時,我首先會獲取其詳細信息並檢查該電子郵件是否已經注冊,如果沒有注冊,那么我將自動注冊它們,然后將其登錄,隨后的登錄請求將找到該電子郵件並自動登錄用戶。

問題出在用戶通過普通注冊表格注冊后,然后我可以使用給定的電子郵件創建一個虛假的社交媒體帳戶,然后僅由於他們沒有社交媒體帳戶就可以登錄該網站上的用戶帳戶使用該電子郵件。

我想我可以添加一列“ regMethod”,以指示使用了哪種注冊方法,並使其成為一個復雜的唯一鍵(email, regMethod) ,並使其本機格式為0 ,facebook為1 ,twitter為2並在登錄用戶時進行比較但這對我來說似乎很客氣。 同樣,如果單個用戶出於某種原因使用所有登錄方法,則會有許多帳戶,而不僅僅是一個帳戶,這是一個問題。

我敢肯定,必須針對該問題找到更好的解決方案,並且已經有人解決了這個問題,所以我覺得我將重新發明輪子以解決該問題。 現實中該如何完成?

我一直在使用一個允許不同類型的登錄(本地或使用Facebook帳戶)的網站來解決您的問題,一個簡單的解決方案是通過為用戶帳戶數據提供單獨的表,從而將用戶帳戶數據與身份驗證數據分開。

首先,我有一個用於用戶數據的表。 然后,您將具有兩個用於進行身份驗證的表,一個LocalAuthentication包含與本地身份驗證方法相關的任何內容,例如鹽,密碼哈希等。然后,您還將擁有FacebookAuthentication表,並且只需要包含一個Facebook訪問令牌。 這兩個表都需要引用UserTable。

這樣,單個用戶可以對同一帳戶進行多次身份驗證。

只需將facebook_idtwitter_id添加到您的用戶表即可。 然后,您將有兩個選擇:

  1. 每個社交帳戶都是一個新帳戶(不合並),您只需創建並保留一個新的用戶對象。

  2. 登錄后(經典方式:login / pwd),您可以為用戶提供將其帳戶與社交帳戶關聯的功能。 在這種情況下,您必須更新用戶表。

當用戶使用API​​時,請不要忘記存儲您將獲得的facebook_idtwitter_id

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM