61
66

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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でユーザー登録完了時にウェルカムメールを送信する]
(http://easyramble.com/welcome-mail-with-devise.html)
ーサインアップ時のメールの送信

注意点
ー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への接続時に認証(パスワード)のエラーが生じる場合の対処方法]
(http://www.atmarkit.co.jp/ait/articles/1409/03/news109.html)

[RailsのActionMailerでメールを送信する(Gmail経由)]
(http://qiita.com/ytr_i/items/0907ee3312ed9d79c9e8)
ーメール送信についてわかりやすくまとまっている

##4.管理ユーザーを設定する
[RailsとDeviseで管理者ユーザーを作ることに成功した]
(http://blog.panicblanket.com/archives/2054)
ー仕様: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でユーザ認証を実装する手順]
(http://qiita.com/kami30k/items/94aec2d94a2b4e9a1d0b)

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

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

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

参考
[deviseでomni-authと組み合わせてたら「missing required keys: [:provider]」]
(http://qiita.com/ms2sato/items/0854de777dc27ca6f0b3)

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

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

参考
[Devise + omniauthでfacebookでログインする機能を実装でハマったところを説明]
(http://nigohiroki.hatenablog.com/entry/2013/08/16/234258)

##7.twitter認証
facebook認証と同様に以下の記事でひと通り出来る。
[Devise+OmniAuthでユーザ認証を実装する手順]
(http://qiita.com/kami30k/items/94aec2d94a2b4e9a1d0b)

以下、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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?