ホーム DoRuby Ruby on RailsでfacebookのOAuth認証を実装する

Ruby on RailsでfacebookのOAuth認証を実装する

この記事はアピリッツの技術ブログ「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を使ってみる』が参考になります。

記事を共有

最近人気な記事