Rails3+Devise+OmniAuthで簡単にログイン機能をつくる

以前,OmniAuthでログイン認証をつくっていたときに,Googleで調べてたらDeviseという簡単にログイン周りの機能を作成するGemがあるというので使ってみた.
目標はTwitterのアカウントでログインすること.

参考:devise と omniauth で facebook 認証をする手順
RailsでDeviseを使ってみた
[Rails] OmniAuth + Device で認証する
deviseでfacebook,twitter認証

インストール

まずはdeviseとomniauthをインストールする.


deviseの初期化

deviseの初期化をする.

出てきた指示どおりにconfig/environments/development.rbとapp/views/layouts/application.html.erbに追記して,rootとなるコントローラを作成しておく.

rails g devise:viewsを実行すると,認証のための画面などが作成される.

最後にOmniAuthでTwitter認証を使うために,TwitterのConsumer key等を設定する.

これで,基本的な設定は完了.


認証用ユーザーの作成

認証用のユーザーを作成する.

マイグレーションファイルを開いてOmniAuthを使うための変更を加える.

ここで大事なのが,Database authenticationに関する部分をコメントアウトしておくこと.デフォルトではemailを認証キーにしているが,Twitterの認証ではemailの情報が取得できないので,ユーザIDなど他のものをキーにして認証しないといけない.


ログイン,ログアウトへのリンクを作成

はじめ,「Twitterでログインする」が出ていて,リダイレクト後に戻ってきて「ログアウト」が表示されていたらOK.

※モデルに後からフィールドを追加したくなったらrails g migrationを使えばよい
$ rails g migration add_omniauth_fields_to_users provider:string uid:string username:string
$ rake db:migrate

※WEBrickでSSLを使ってHTTPS通信する
Setup WEBrick to Serve SSL (HTTPS) as well as Non-SSL (HTTP) Traffic Side-by-Side

※日本語化
https://github.com/ir3/tatekoto/tree/master/config/locales

Rails, プログラミング

Posted by tanitanin


PAGE TOP