私はFacebookのOauthとDeviseを私のレールアプリで使っています。私は正常にフェイスブックのログインページに連れて行きましたが、コールバックアクションでエラーが発生しました。コールバックアクションでnil
を返すrequest.env["omniauth.auth"]
まで追跡しました。Rails、Devise、Facebook Oauth:request.env ["omniauth.auth"]はゼロです
Gemfile:
gem 'devise'
gem 'omniauth'
gem 'omniauth-facebook'
ルート:
devise_scope :user do
get '/users/auth/facebook/callback', to: 'users/omniauth_callbacks#facebook'
end
resources :users
devise_for :users, path: '', path_names: { sign_up: 'register', sign_in: 'login', sign_out: 'logout'}, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" }
イニシャライザ/ devise.rb:
config.omniauth :facebook, Figaro.env.facebook_key, Figaro.env.facebook_secret,
scope: 'email,public_profile',
callback_url: Figaro.env.facebook_callback_url
User.rb:
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :confirmable, :validatable,
:omniauthable, :omniauth_providers => [:facebook]
omniauth_callbacks_controller.rb:私のrequest.env["omniauth.auth"]
はnil
を返している原因
class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
def facebook
@user = User.from_omniauth(request.env["omniauth.auth"])
request.env["omniauth.auth"] ## <<=== this is nil
任意のアイデア?
コーディングお楽しみください、あなたはこれまでに解決策を見つけるか得るのだろうか? –