2

HartlのRailstutorialhttp://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属性と同じものですか?

簡単に言うと、OmniAuthを実装するためにユーザーモデルにuid列を追加する必要がありますか?

ありがとう!

4

1 に答える 1

2

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」列の両方が必要です。

于 2012-05-23T19:44:05.277 に答える