2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

omniauth-facebookでユーザー情報を取得する

Posted at

Railsでomniauth-facebookを使用したOAuthでFacebookユーザーの情報を取得するまでのメモ。

#Facebook for developers
Facebook for developersでデベロッパ登録して、さらにアプリを登録する。
その際の注意点として、「アプリドメイン」と「有効なOAuthリダイレクトURI」をちゃんと設定しておかないとOAuth実行時に「このURLのドメインはアプリのドメインに含まれていません。このURLを読み込むには、アプリ設定のアプリドメインにすべてのドメインとサブドメインを追加してください。」なんて文言のエラーが出て失敗します。
「アプリドメイン」は普通にアプリのドメイン(https://www.アプリ名.com等)
「有効なOAuthリダイレクトURI」はOAuthの結果がCBされるURI(omniauth-facebookの場合はhttps://www.アプリ名.com/auth/facebook/callback)

ss0001.jpg

ss0002.jpg

#omniauth-facebookのインストール
Gemfileに「gem 'omniauth-facebook'」を追記して

$ bundle install

#omniauth-facebookを設定
config/initializers/omniauth.rbを作成して↓を記載。

omniauth.rb
Rails.application.config.middleware.use OmniAuth::Builder do
  provider :facebook, ENV['FACEBOOK_KEY'], ENV['FACEBOOK_SECRET'],
    scope: 'email', display: 'popup', local: 'ja_JP', info_fields: "id, name, gender"
end

FACEBOOK_KEY、FACEBOOK_SECRETはFacebookにアプリを登録した時の情報を記載。
scope等の詳細はomniauth-facebookのサイトに記載あり。

#routesを設定
OAuthした結果がCallbackされるURLのroutesを設定しておく。

routes.rb
  get '/auth/facebook/callback', to: 'facebook#auth_done'

#コントローラーを作成
Callback先を作成。

facebook_controller.rb
  def auth_done
    facebook_id = request.env['omniauth.auth']['extra']['raw_info']['id']
    name = request.env['omniauth.auth']['extra']['raw_info']['name']
    gender = request.env['omniauth.auth']['extra']['raw_info']['gender']
    redirect_to :root
  end

#OAuthをトリガする
Facebookボタン等をアプリに配置してユーザーが押した際に「/auth/facebook」に飛ばすとFacebookのサインイン画面が表示される。

#Callbackが来る
ユーザーが正常にサインインしてくれた場合作成したfacebook_controllerのメソッドが実行され晴れてユーザーの情報が取得出来る。

#参考
https://github.com/mkdynamic/omniauth-facebook
https://github.com/omniauth/omniauth
https://developers.facebook.com/docs/facebook-login

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?