2

新しい Rails 3 アプリを作成していて、ユーザーが Facebook または Twitter の資格情報を使用してサインインできるようにしたいと考えています。

これを Devise と OmniAuth を使用して実装する必要があるのか​​、それとも OmniAuth だけで実装する必要があるのか​​わかりません。Simple OmniAuthに関する Ryan Bate のスクリーンキャストを見たところ、OmniAuthをそのまま使用できるようですが、それで十分かどうかはわかりません。

次の要件があります。

  1. Facebook や Twitter からのサインインを許可します。ローカル ユーザー アカウント/パスワードは実装しません。

  2. FB/Twitter 経由で初めてサインインすると、関連する FB/Twitter oAuth トークンを保存できるように、データベースに新しいユーザーが作成されます。

  3. ユーザーは、FB と Twitter の両方のアカウントをプロファイル/ユーザーに関連付けて、FB と Twitter の両方に投稿できるようにする必要があります。

  4. ユーザーは自分のアカウントを削除できる必要があります。

4

3 に答える 3

4

これを Devise の Google メーリング リストに投稿したところ、José Valim (Devise のメンテナーであり、Rails のコア チーム メンバー) から次の応答がありました。

「OmniAuth のみを使用できます。Devise を使用する場合、唯一の利点は Omniauth URL ヘルパーを追加することですが、それは非常に最小限であるため、正直なところ、オーバーヘッドの価値はありません。」
--ホセ・ヴァリム

于 2011-03-25T19:17:03.463 に答える
1

Deviseは、ユーザーアカウントに関連するすべてのものを自動的に処理するための優れた方法です。すべてのベルやホイッスルが必要ない場合は、スクリーンキャストのようにSimpleOmniAuthを使用する必要があります。

FacebookとTwitterのアカウントをリンクしようとすると、もう一方をリンクするために一方にサインインする必要があるという唯一の問題があります。それらが別々の機会にサインインした場合は、データベースに2人のユーザーがいる可能性があります。GoogleとFacebookはどちらもメールアドレスを送り返すので、これは問題にはなりませんが、Twitterはユーザー名のみを送り返し、メールアドレスは送り返しません。

ユーザー名(Twitter)と電子メールアドレス(Facebook)のフィールドをユーザーモデルに追加する必要があります。これにより、訪問者が個別にアカウントをリンクし、後でリンクしたい場合にアカウントのリンクを試みることができます。設定するときは注意してください。

于 2011-03-25T18:47:51.140 に答える
0

OmniAuthだけを使用できない場合は、私の場合のように、Deviseに依存するActiveAdminを使用したい場合や、current_user競合するようなメソッドを使用する場合は、ログインページを独自のものでオーバーライドできます。

match '/users/sign_in', :to => "sessions#new"
devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" }

ナビゲーションに「Facebookでサインイン」リンクがありますが、このページは、ユーザーがログインしていないときに保護されたページにアクセスしようとしているときにユーザーをリダイレクトするために必要です。

編集:実際には、wikiページに「他の認証なしでOmniAuthを使用する」というセクションがあります。

于 2012-04-20T08:26:37.260 に答える