我使用Hartl的Railstutorial http://ruby.railstutorial.org/chapters/modeling-users#sec:user_model从头创建了我的身份验证。
我想为我的网站项目实施Facebook和Twitter登录。在观看Railscasts Simple Omniauth http://railscasts.com/episodes/241-simple-omniauth?view=comments之后,我正在考虑使用OmniAuth。
在视频中,我们被要求生成用户模型:
rails generate model user provider:string uid:string name:string
uid对Twitter和Facebook的登录是唯一的,还是与我的用户模型中的id属性相同?
简单地说,我是否需要在我的用户模型中添加uid列以实现OmniAuth?
谢谢!
答案 0 :(得分:2)
UID是facebook或twitter登录的用户ID。它与User模型中的“id”字段不同。
Omniauth使用环境变量来设置哈希。在这个哈希是一个'uid'键,您将用它来在您的数据库中查找您的用户。它还设置了“提供者”键,因此“uid”键和“提供者”键的组合使您能够查找用户记录,例如
auth = request.env["omniauth.auth"]
user = User.find_by_provider_and_uid(auth["provider"], auth["uid"])
因此,您的模型(用户)需要同时包含'provider'和'uid'列。