2017-01-24 46 views
6

Używam Facebook Oauth i Devise w mojej aplikacji rails. Udaje mi się przejść do strony logowania na Facebooku, ale wtedy pojawia się błąd w działaniu wywołania zwrotnego. Śledzono to do request.env["omniauth.auth"] zwracając nil w mojej akcji wywołania zwrotnego.Szyny, devise i Facebook Oauth: request.env ["omniauth.auth"] jest zerowy

Gemfile:

gem 'devise' 
gem 'omniauth' 
gem 'omniauth-facebook' 

Trasy:

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" } 

inicjalizatory/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:

class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController 

def facebook 

    @user = User.from_omniauth(request.env["omniauth.auth"]) 
    request.env["omniauth.auth"] ## <<=== this is nil 

Każdy pomysł, dlaczego mój request.env["omniauth.auth"] wraca nil?

+0

Znalazłeś rozwiązanie do tej pory? –

Odpowiedz

2

Więc w końcu jestem w stanie znaleźć problemu, ja również zmaga się z tym samym numerze przez długi czas, ale teraz mamy rozwiązanie, ok jedziemy:

Problem jest z devise. rb, po prostu usuń to z pliku:

config.omniauth :facebook, Figaro.env.facebook_key, Figaro.env.facebook_secret, 
       scope: 'email,public_profile', 
       callback_url: Figaro.env.facebook_callback_url 

, a następnie uruchom ponownie serwer, a następnie spróbuj uzyskać logowanie poprzez Facebook.

Dostaniesz co chcesz :)

Dzięki, Enjoy Coding :)