我目前正在構建一個Web應用程序(我的第一個),並且希望包含OAuth功能,以便用戶可以通過twitter和facebook登錄。我在Sinatra建設它,並且看了OmniAuth寶石,這似乎是適合這份工作的。我遇到的問題是重新設計用戶模型。使用OAuth時的用戶模型設計
目前我有通常的名字,姓氏,用戶名,電子郵件和密碼,用戶名是唯一的,這樣我就可以使用它作爲ID,並且像twitter一樣,我可以輸入www.myapp.com/用戶名以查找該用戶的信息。我決定,對於初始版本,我只是將twitter用作登錄,然後是facebook,最後是通常的註冊。我的問題是,人們更有可能在Facebook上擁有與Twitter相同的用戶名。因此,例如,如果我使用twitter登錄並採用'newuser'ID,則當來自Facebook的用戶名相同的人嘗試加入時,這將成爲問題。
OmniAuth gem通過提供用戶信息的散列來工作。我將使用Mongo,所以我可以在用戶模塊中包含一個twitter和facebook字段,並將哈希值保留在那裏,對於如何在創建唯一標識的時候我有點難以理解,這兩種服務都將使用相同用戶名的用戶,或者一旦實施常規登錄,某人可以註冊並使用已在Twitter或Facebook上使用的用戶名,從而防止這些用戶使用他們的twitter /臉書註冊賬戶。
我真的很想聽聽別人怎麼接近這個。
再次,應該做了一些更多的搜索。 http://blog.railsrumble.com/blog/2010/10/08/intridea-omniauth這是一篇關於分離用戶和授權的有趣文章。 – 2010-11-27 09:51:57