2011/09/29

RailsでFacebook認証

Gemfileに書きを追記

gem 'oauth'
gem 'facebook_oauth'
gem 'oauth2', '0.4.1'

なぜかoauthは0.4.1以上だと上手く行かなかったのでversionを指定します。あとは各種コントローラーを作ります。もちろん事前にデベロッパー登録はをしておいてCONSUMER_KEYなどは適宜取得したものに変更します。

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 %>

http://localhost:3000/usersにアクセスすれば認証ページヘ行きます。

6 件のコメント:

kadai2009 さんのコメント...

callbackの時 OAuth:errorになってしまった。
@client.authorize(:code => paramas[:code]) 行です

kadai2009 さんのコメント...

環境 rails3
facebook_oauth 0.3.0
oauth2 0.5.2

管理人 さんのコメント...

コメントありがとうございます。
oauth2 のバージョンをさげてみたらどうでしょう。

kadai2009 さんのコメント...

返事ありがとうございます。
oauth2 のバージョンを0.4.1に下げているも
OAuth2:errorになります。

成功して時環境を教えて頂きますか?

管理人 さんのコメント...

Ruby1.9.2のRails3でほかは下記の通りです。

* facebook_oauth (0.2.3)
* oa-core (0.2.6)
* oa-oauth (0.2.6)
* oauth (0.4.5)
* oauth2 (0.4.1)

あとlocalhostで動かすのであればFacebookDeveloperサイドでのURLの指定もlocalhostにしておかないとダメです。

kadai2009 さんのコメント...
このコメントは投稿者によって削除されました。