Dav*_*ite 8 facebook oauth oauth-2.0 ruby-on-rails-3
我正在使用rails 3构建一个Web应用程序.我有自己的用户注册,登录和身份验证工作正常,我希望添加Oauth 2实现,以便人们可以连接Facebook和登录/注册少步骤.
我有成功的开始.到目前为止,我可以让facebook验证用户身份并允许我访问他们的信息.我还没有尝试过设置Twitter auth,但我认为它会以类似的方式工作.
我现在正在思考的是如何将它集成到我现有的用户模型中,该用户模型基本上由具有电子邮件,名称和密码的用户表组成.
我应该保留我的用户表并设置Access Providers表:
id | user_id | provider_id | access_key
---------------------------------------
1 | 4 | 1 | xyz
2 | 4 | 2 | pqr
3 | 7 | 1 | dfr
Run Code Online (Sandbox Code Playgroud)
并且让我们说一个"用户Facebook信息"表格,其中我存储了有关用户的信息,这些信息是从Facebook图表中访问该用户那里收集到的?
这样我可以使用每个用户所拥有的核心信息来规范用户表,无论他们是否通过Facebook连接(姓名,电子邮件,密码),并使用他们的Facebook个人资料中的数据补充该数据(如果可用)?
有一个更好的方法吗?是否有一个很好的指南或教程来设计这种类型的数据库模型(想想Quora)?我也可以处理PHP教程了!
抱歉,这是一个开放式问题.
如果您尝试同时使用Twitter和Facebook,您可能需要为您的OAuth客户端考虑Signet或OmniAuth.自从我写这篇文章以来,我偏向于Signet,但OmniAuth可能是现在更好的选择,因为它已经存在了一段时间,取决于你想要做什么.
至于数据建模,你有正确的想法.你可能需要让它更通用一些.access_key您可能需要access_token并且可能需要refresh_tokenOAuth 2 而不仅仅是一个.同时,OAuth 1使用凭证密钥/密钥对.所以可能是这样的(省略主键和外键):
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
Run Code Online (Sandbox Code Playgroud)