目次
この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。
今回は、Ruby on RailsでfacebookのOAuth認証を実装する手順をご紹介したいと思います。
OAuth認証といえば何だか小難しい印象がありますが、RailsにおけるOAuth認証の実装は驚くほど簡単です。
今回は例として、facebookのOAuth認証を実装する手順を5つのステップに分けてご紹介します。
※以下の手順はfacebookアカウントを登録済みのものとします。
facebookの設定(facebookにアプリケーションを登録する)
STEP1:本人認証を行う
携帯電話のメールアドレス、または、クレジットカードにて本人認証を行います。
※以下、携帯電話のメールアドレスで認証を行う手順を記載します
(1) http://www.facebook.com/docs/guides/web#!/developers/createapp.php
(2) 「携帯認証」のリンクを押下(登録画面がポップアップで表示されます)
(3) 携帯電話のメールアドレスを入力する
(4) 携帯電話に届いた確認用コードを入力する
(5) 本人認証完了
※2011/03/02現在、完了メッセージと共に再び②の入力フォームが表示されますが、①のウィンドウに戻り、画面を更新すると次のステップへ進むことができます。
STEP2:アプリケーションを登録する
(1) アプリケーション名を入力し、利用規約に同意した上で「アプリケーションを作成」を押下します。
(2) 画像認証を行います。
(3) アプリケーションの情報を入力します。
(※WEB Site > Site URL に「http://localhost:3000/」を記載するだけでOKです)
(4) アプリケーション登録完了
※マイアプリ画面内に表示されている「アプリID」「アプリの秘訣(※facebook側の誤訳な気がしますが、以下これで通します)」がfacebookアプリケーション開発時に必要となります。
Railsアプリの作成
STEP3:必要なRails環境
<実行環境>
今回のサンプルは以下の環境で作成しました。必要なgemが入っていない場合はインストールしてください
ruby:1.8.7
rails:2.3.10(sudo gem install rails -v 2.3.10)
oauth:0.4.4(sudo gem install oauth -v 0.4.4)
facebook_oauth:0.2.2(sudo gem install facebook_oauth -v 0.2.2)
STEP4:Railsアプリの作成
(1) 新規Railsプロジェクトを作成します
rails facebook
(2) RAILS_ROOTに移動し、OAuth認証用のControllerを作成します
script/generate controller Users index callback
(3) 各ファイルを下記のとおりに編集します
app/controllers/users_controller.rb
class UsersController < ApplicationController
CALLBACK_URL = "http://localhost:3000/users/callback"
CONSUMER_KEY = "アプリID"
CONSUMER_SECRET = "アプリの秘訣"
def index
end
def oauth
client = FacebookOAuth::Client.new(
:application_id => CONSUMER_KEY,
:application_secret => CONSUMER_SECRET,
:callback => CALLBACK_URL
)
redirect_to client.authorize_url
end
def callback
@client = FacebookOAuth::Client.new(
:application_id => CONSUMER_KEY,
:application_secret => CONSUMER_SECRET,
:callback => CALLBACK_URL
)
@client.authorize(:code => params[:code])
end
end
app/views/users/index.html.erb
<%= link_to 'OAuth認証', '/users/oauth' %>
app/views/users/callback.html.erb
<%= @client.me.info %>
STEP5:Railsアプリを動かす
(1) サーバーの起動
script/server
(2) ブラウザで「http://localhost:3000/users」にアクセス
(3) 「OAuth認証」リンクを押下
(4) 未認証の場合、facebookサイトにて認証画面が表示されるので、「許可」を押下します
(5) CALLBACK先(/users/callback)にリダイレクトされます
(6) 「/usrs/callback」ページにてユーザー情報が表示されれば認証成功です。
さいごに。
以上となりますが、いかがでしょうか。意外とハードルは高くないという印象を受けていただけたでしょうか。
ちなみに、TwitterのOAuth認証実装については当サイト内の記事『rubyでOAuthを使ってみる』が参考になります。