2012-05-23 66 views
1

我已經使用Devise和OAuth將社交登錄(Facebook,Twitter等)與Rails應用程序集成在一起。請求和回調都很好,用戶可以高效地驗證應用程序和登錄。Twitter不提供Rails集成的電子郵件地址

我的問題是這樣的:

隨着設計,我的網站有用戶的電子郵件地址作爲用戶名。因此,無論用戶首次通過社交網站登錄,都會爲其帳戶存儲「連接」記錄,以顯示他們登錄的社交網站。如果他們在我的網站上還沒有帳戶,則使用回調數組中的電子郵件地址創建一個帳戶。然後將連接與返回的令牌和祕密一起存儲以備後用(FB帖子,推文等)。

不幸的是,Twitter不提供電子郵件地址。爲了避免這種情況,我要求首次使用Twitter的用戶只需提供一個電子郵件地址,以便創建一個帳戶。但是,我不知道如果他們已經在我的網站上有帳戶該怎麼辦。我無法檢查他們是否已經做了,因爲我沒有給予電子郵件地址匹配。這最終可能會導致用戶擁有多個帳戶。

所以,我有點茫然,如果有人有任何建議,這將是非常有益的。 謝謝! :)

回答

0

您需要將{provider,twitter identifier}等一些oauth提供程序信息存儲到數據庫中,然後根據該信息檢查twitter oauth而不是電子郵件ID。

最簡單的做法是添加一個稍微不同的流程,如果登錄是通過twitter。詢問第一次Twitter登錄用戶的電子郵件ID。在你的用戶表中,添加一個名爲tw_id的列並添加用戶的twitter標識符。下一次,如果登錄是通過Twitter,您檢查tw_id而不是提供者電子郵件,並繼續正常的應用程序流程。

相關問題