LoginSignup
61
66

More than 5 years have passed since last update.

Rails deviseによる認証機能の実装 参考まとめ ~facebook・twitter認証まで~

Posted at

deviseによるユーザー認証機能の実装で役立った記事をまとめます。
目次
1.deviseの導入
2.deviseでの登録時に独自入力フォームを追加する
3.登録完了時にウェルカムメールを送信する
4.管理ユーザーを設定する
5.日本語化する
6.facebook認証
7.twitter認証

1.deviseの導入

Devise で認証機能を追加
記事通りに進めればオーケー。
“"Rails のサーバーが起動している事を確認したら、http://localhost:3000/users/sign_up をブラウザで開いてユーザーを作成してください。”"
の部分は再起動しないとエラー表示が出ることに注意。

2.deviseでの登録時に独自入力フォームを追加する

Rails4 Devise でサインアップ用のユーザー登録フォームに、独自の入力フィールドを追加する
ーサインアップ時に独自のフィールドを追加出来る。
ー基本的にこれで出来る
ただし、
app/views/users/regsitrations/new.html.erb
の部分は
app/views/devise/regsitrations/new.html.erb
だった(あと、viewの中身がちょっと違う)

3.登録完了時にウェルカムメールを送信する

Deviseでユーザー登録完了時にウェルカムメールを送信する
ーサインアップ時のメールの送信

注意点
ーrails cの後は
UserMailer.registration_confirmation.deliverではなくて
UserMailer.registration_confirmation.deliver_nowを打つ。
ー2段階認証プロセスに登録している場合は、アプリケーション固有のパスワードが必要になるが、登録してなければ気にする必要はない。
ただし、今回は2段階認証プロセスに登録していないのにauthエラー。ここで、「安全性の低いアプリを許可」で対応。
https://www.google.com/settings/security/lesssecureapps
ーconfig.action_mailer.raise_delivery_errors = true
ここをfalseとしてエラーメッセージがでなくて困ったので注意。
メーラーからGmailへの接続時に認証(パスワード)のエラーが生じる場合の対処方法

RailsのActionMailerでメールを送信する(Gmail経由)
ーメール送信についてわかりやすくまとまっている

4.管理ユーザーを設定する

RailsとDeviseで管理者ユーザーを作ることに成功した
ー仕様:usersテーブルの中にadmin booleanを設定して、adminを判定。
user登録時にadminの設定がされているユーザがいなければ、adminへのチェックボックスが表示。既にアドミンが設定されていればチェックボックスは非表示。(つまり、最初のユーザだけadminになれる)

config.scoped_views = trueについて
http://d.hatena.ne.jp/gen0_0/20110125/1295987729
通常ユーザと管理人用ユーザのログイン画面を分けたいときに追記する。

5.日本語化する

railsの日本語化 deviseの日本語化
ーこれでdeviseも含め、日本語化出来る。

6.facebook認証

以下の記事でひと通り出来る。
Devise+OmniAuthでユーザ認証を実装する手順

以下、ひと通り記事通りにやってfacebookログインを試みたあとのエラー対応。

★missing required keys: [:provider]というエラー。

routes.rbのdeviceに
:omniauth_providers => [:facebook]
を追加した。
これでもうまく反映されなかったが、rails sをかけたらうまくいったので注意。

参考
deviseでomni-authと組み合わせてたら「missing required keys: [:provider]」

★なぜかログインボタンを押してもログイン出来ない(ユーザ登録出来ていない)。

原因:メールアドレスでのユーザ登録時に付けたバリデーションが悪さしてた。
User.createの部分を
User.newとUser.save(:validate => false)で対応。

参考
Devise + omniauthでfacebookでログインする機能を実装でハマったところを説明

7.twitter認証

facebook認証と同様に以下の記事でひと通り出来る。
Devise+OmniAuthでユーザ認証を実装する手順

以下、twitterログイン関連のエラー

★アプリの登録が出来ない(URLでエラーが出る)

Twitter Developer画面でwebサイトの設定を
http://localhost:3000 に設定するとエラーで登録出来ないが、
http://127.0.0.1:3000 に設定すると登録出来た。

★facebookログインのときと同様にmissing required keys: [:provider]というエラー。

以下のように、facebook同様の処理をする
routes.rbのdeviceに
:omniauth_providers => [:twitter]
を追加した。
これでもうまく反映されなかったが、rails sをかけたらうまくいったので注意。

61
66
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
61
66