提问者:小点点

Omniauth从零开始为脸书和Twitter提供认证


我使用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?

谢谢


共1个答案

匿名用户

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”列才能正常工作。