2017-10-05 3 views
0

Ich versuche, eine Rails 5 API nur App zu erstellen, um Anmeldefunktionen mit Facebook zu erstellen.Rails 5 API nur mit Devise, OmniAuth, Devise Token Auth Callback-Problem während Facebook anmelden

ich die folgenden Edelsteine ​​bin mit:
devise_token_auth
omniauth_facebook

Ich habe gefolgt Dokumentation devise_token_auth die App zu erstellen. Die von ihnen bereitgestellten demo app haben ebenfalls einen ähnlichen Fehler.

Ich kann mich erfolgreich anmelden. Das Empfangstoken des Benutzers erhöht sich um sign_in_count, aber nach diesem Rückruf wird http://localhost:8000/auth/facebook/callback#_=_ mit einer leeren Seite angezeigt.

unten ist das Konsolenprotokoll der Anfragen:

Started GET "/omniauth/facebook?resource_class=User" for 127.0.0.1 at <timestamp> 
I, [2017-10-05T18:10:34.005009 #21485] INFO -- omniauth: (facebook) Request phase initiated. 
Started GET "/omniauth/facebook/callback?code=<code>" for 127.0.0.1 at <timestamp> 
I, [2017-10-05T18:10:34.402585 #21485] INFO -- omniauth: (facebook) Callback phase initiated. 
Processing by DeviseTokenAuth::OmniauthCallbacksController#redirect_callbacks as HTML 
    Parameters: {"code"=>"<code>", "state"=>"<state>", "provider"=>"facebook"} 
Redirected to http://localhost:8000/auth/facebook/callback 
Completed 302 Found in 1ms (ActiveRecord: 0.0ms) 


Started GET "/auth/facebook/callback" for 127.0.0.1 at <timestamp> 
Processing by DeviseTokenAuth::OmniauthCallbacksController#omniauth_success as HTML 
    Parameters: {"provider"=>"facebook"} 
    User Load (0.4ms) SELECT <SQL QUERY> 
    (0.2ms) begin transaction 
    SQL (3.8ms) UPDATE <SQL QUERY> 
    (388.3ms) commit transaction 
    (0.1ms) begin transaction 
    (0.1ms) commit transaction 
Completed 200 OK in 566ms (Views: 0.2ms | ActiveRecord: 394.6ms) 

ich auch omniauth_callbacks_controller.rb hinzugefügt haben, aber es hat keine Wirkung.

Code: https://github.com/tannakartikey/rails_api/

Antwort

1

Genau wie mit Vanille Entwickeln Sie eine Option in den Routen passieren müssen, um einen Nicht-Standard-Controller zu spezifizieren oder es wird Routen zu den Standardcontroller durch den Edelstein versehen erzeugen:

Rails.application.routes.draw do 
    mount_devise_token_auth_for 'User', at: 'auth', controllers: { 
    omniauth_callbacks: 'users/omniauth_callbacks' 
    } 

    mount_devise_token_auth_for 'Admin', at: 'admin_auth', controllers: { 
    omniauth_callbacks: 'admins/omniauth_callbacks' 
    } 

    as :admin do 
    # Define routes for Admin within this block. 
    end 

    #scope module: 'api' do 
    #namespace :v1 do 
     #resources :users, only: [:show, :index] 
    #end 
    #end 
end 
Verwandte Themen