その他
    ホーム 技術発信 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を使ってみる』が参考になります。

    記事を共有
    モバイルバージョンを終了