我使用Hartl的rails tutorial http://ruby . rails tutorial . 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
Twitter和脸书登录的uid是唯一的吗?或者它和我的用户模型中的id属性是一样的吗?
简单地说,我是否需要在我的用户模型中添加一个uid列来实现OmniAuth?
谢谢
UID是facebook或twitter登录的用户id。它与用户模型中的“id”字段不同。
Omniauth 使用环境变量来设置哈希。此哈希中有一个“uid”键,您将希望使用它在数据库中查找您的用户。它还设置了一个“提供者”键,因此“uid”键和“提供者”键的组合使您能够查找您的用户记录,例如
auth = request.env["omniauth.auth"]
user = User.find_by_provider_and_uid(auth["provider"], auth["uid"])
因此,您的模型(用户)需要同时具有“提供程序”和“uid”列才能正常工作。