2

我使用 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 登录所独有的,还是与我的 User 模型中的 id 属性相同?

简单地说,我是否需要在我的用户模型中添加一个 uid 列来实现 OmniAuth?

谢谢!

4

1 回答 1

2

UID 是 facebook 或 twitter 登录的用户 ID。它与 User 模型中的 'id' 字段不同。

Omniauth 使用环境变量来设置哈希。在这个散列中是一个 'uid' 键,您将要使用它来在您的数据库中查找您的用户。它还设置了一个'provider'键,因此'uid'键和'provider'键的组合使您能够查找您的用户记录,例如

auth = request.env["omniauth.auth"]
user = User.find_by_provider_and_uid(auth["provider"], auth["uid"]) 

因此,您的模型(用户)需要同时具有 'provider' 和 'uid' 列才能正常工作。

于 2012-05-23T19:44:05.277 回答