OmniAuthでTwitter認証を試してみる
RailsでHello, world!を表示してみる
の続き
OmniAuthでTwitter認証を試してみる。
[参考] 【Rails】OmniAuthを使ってtwitter / facebookで認証する : ノンプログラマーブログ http://npb.somewhatgood.com/blog/archives/715
Twitterでアプリケーションの作成
下記のページでアプリケーションを用意する。
Twitter Developers https://dev.twitter.com/
アプリケーション名などを入力する。
WebsiteとCallbackURLは同じにしておく。
今回使ってるVirtualBox環境のIPアドレスが「192.168.56.101」なので、
WebsiteのURLは「http://192.168.56.101/」にしている。
CallbackURLも同じにしておく。
※アプリケーション名は、同じ名前を他の人が既に使ってると駄目みたいです。
アプリケーションの作成が完了すると、APIのkeyやsecretが発行される。
gemのインストール
OmniAuthのgemをインストールする。
$ vi Gemfile ・・・ gem 'omniauth' ←追加 gem 'omniauth-twitter' ←追加
$ bundle install
プログラムの作成
まず、作成したTwitterアプリのAPIのkeyとsecretを設定する。
$ vi config/initializers/omniauth.rb
Rails.application.config.middleware.use OmniAuth::Builder do provider :twitter,"(API key)","(API secret)" end
Twitterからのコールバックのルーティングを設定をする。
$ vi config/routes.rb
・・・ root 'sample#index' get '/auth/:provider/callback' => 'sample#index' ←追加 ・・・
Twitterログインのリンクを設置する。
$ vi app/views/sample/index.html.erb
<%= link_to "Twitterログイン","/auth/twitter" %>
普通にアクセスした場合は、index.html.erbを表示し、
Twitterからのコールバックの場合は、Twitterの情報を表示する。
$ vi app/controllers/sample_controller.rb
class SampleController < ApplicationController def index if request.env["omniauth.auth"] then render :json => request.env["omniauth.auth"]["info"] end end end