我正在使用 Rails 3 构建 Web 应用程序。我有自己的用户注册、登录和身份验证工作正常,我希望添加 Oauth 2 实现,以便人们可以连接 Facebook 并以更少的步骤登录/注册.
我已开始成功地开展这项工作。到目前为止,我可以让 facebook 对用户进行身份验证并允许我访问他们的信息。我还没有尝试设置 Twitter 身份验证,但我认为它会以类似的方式工作。
我现在正在考虑的是如何将其集成到我现有的用户模型中,该模型主要由具有电子邮件、姓名和密码的用户表组成。
我是否应该保留我的用户表并设置一个访问提供者表:
id | user_id | provider_id | access_key
---------------------------------------
1 | 4 | 1 | xyz
2 | 4 | 2 | pqr
3 | 7 | 1 | dfr
然后说一个“用户 Facebook 信息”表,我在其中存储有关用户的信息,这些信息是通过访问 Facebook 图表中的该用户而收集到的?
这样我就可以使用每个用户拥有的核心信息来规范化用户表,无论他们是否通过 facebook 连接(姓名、电子邮件、密码),并在可用时用他们的 facebook 个人资料中的数据补充该数据?
有更好的方法吗?是否有设计此类数据库模型的良好指南或教程(想想 Quora)?顺便说一句,我也可以处理 PHP 教程!
很抱歉这个开放式问题。
最佳答案
如果您尝试同时使用 Twitter 和 Facebook,您可能需要考虑将 Signet 或 OmniAuth 用于您的 OAuth 客户端。我偏向于 Signet,因为它是我写的,但 OmniAuth 可能是现在更好的选择,因为它已经存在了更长的时间,具体取决于你想做什么。
至于数据建模,您的想法是正确的。你可能需要让它更通用一点。对于 OAuth 2,您可能需要 access_token
和可能的 refresh_token
而不仅仅是 access_key
。同时,OAuth 1 使用凭证 key / secret 对.所以也许是这样的(省略主键和外键):
auth_scheme | access_token | refresh_token | key | secret | username | password
-------------------------------------------------------------------------------
oauth_1 | | | 123 | 456 | |
oauth_2 | 123 | | | | |
oauth_2 | 123 | abcd | | | |
xauth | | | | | abcd | 12345
clientlogin | | | | | abcd | 12345
关于ruby-on-rails-3 - 使用 Oauth 2 为用户建模,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5158361/