Ruby on Rails で Facebook の OAuth を使う
Ruby on RailsでfacebookのOAuth認証を実装する を参考にした。
facebook_oauth プラグインを使ってラクしたものだ。
gem のインストール
$ sugo gem install oauth
$ sugo gem install oauth2
$ sudo gem install facebook_oauth
バージョンを指定せずに最新をインストールして大丈夫だった。
oauth v0.4.6
oauth2 0.8.0
facebook_oauth 0.3.0
ソースコードの編集
$ rails generate controller Users index callback
– controller/users_controller.rb
class UsersController < ApplicationController CALLBACK_URL = "Facebook Developers の Website with Facebook Login の Site URL" CONSUMER_KEY = "Facebook Developers の App ID" CONSUMER_SECRET = "Facebook Developers の App 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
– views/users/index.html.erb
<%= link_to 'OAuth認証', '/users/oauth' %>
– views/users/callback.html.erb
<%= @client.me.info %>
以上は書いてあったとおり。
追加で以下の作業が必要。
– config/routes.rb
get "users/oauth"
Routing Error : No route matches [GET] “/users/oauth” が出たので追加してみた。
– Gemfile
gem 'facebook_oauth'
NameError : uninitialized constant UsersController::FacebookOAuth が出たので追加してみた。
ただ、facebook_oauth が Heroku にないのか、Heroku の git にあげようとするとエラーになるという問題が・・・