FACEBOOK API更新まとめ(Railsアプリ/omniauth)

  • 10
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

FACEBOOKAPIで、v2.0を使っていて、バージョンをあげる必要になったので、メモを残しておく。

現在の状況
RAILSのアプリケーションで、omniauth-facebookを使って,facebookログインをしている。
FaceBookから欲しい情報としては、
【生年月日, 氏名, 性別, メールアドレス】

流れ

■config下のomniauth.rbでomniauthの設定をする
全体

config/initializer/omniauth.rb
Rails.application.config.middleware.use OmniAuth::Builder do
  provider :facebook, FB_APP_ID, FB_APP_SECRET,
          scope: "email, user_birthday, public_profile", display: "popup",
          client_options: {
            site: 'https://graph.facebook.com/v2.7',
            authorize_url: "https://www.facebook.com/v2.7/dialog/oauth"
          },
          local: "ja_JP",
          info_fields: "email, birthday, gender, first_name, last_name"
end

今回は、まずは開発環境でv2.7のapiを叩くように指定する。

client_options: {
            site: 'https://graph.facebook.com/v2.7',
            authorize_url: "https://www.facebook.com/v2.7/dialog/oauth"
          }

これで、各テスト(今回はfacebookログイン、登録)を行う。

テストを全てクリアしたら、スイッチオン
スクリーンショット 2016-07-30 21.14.29.png
で終了。

ハマリポイント

v2.3までは、

scope: "email, user_birthday, public_profile", display: "popup"

この部分で、パーミッションを指定することで確認画面を出すだけでよかった。
v2.4から以下の記述も必要。。。

 info_fields: "email, birthday, gender, first_name, last_name"

graph-api ver 2.4 から取得できるデフォルトが、nameとid,imageになっている
omniauth-facebookのオプションでにあるinfo_fieldsを使うことで、取得できるようになる。

参考文献

Facebook APIで項目が取得できない!パーミション(権限)についてまとめてみた
Facebook API を利用するには、すべてにアクセストークンが必須になったようです。アクセストークン取得
omniauth-facebook+GraphAPI ver 2.4でemailフィールドが取得されない件の対応
GitHub mkdynamic/omniauth-facebook