2017-10-05 3 views
0

Je suis en train de créer une application Rails 5 API uniquement pour créer une connexion avec Facebook.Rails 5 API uniquement avec Devise, OmniAuth, Devise Token Auth problème de rappel pendant que Facebook se connecte

J'utilise les gemmes suivantes:
devise_token_auth
omniauth_facebook

J'ai suivi la documentation sur devise_token_auth pour créer l'application. Les demo app fournis par eux ont également une erreur similaire.

Je suis capable de me connecter avec succès. Jeton de réception de l'utilisateur, il augmente sign_in_count mais après ce rappel va à http://localhost:8000/auth/facebook/callback#_=_ avec une page vierge.

est en dessous du journal de la console des demandes:

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) 

J'ai également ajouté omniauth_callbacks_controller.rb mais il n'a pas d'effet.

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

Répondre

1

Tout comme à la vanille DEVISE vous devez passer une option dans les routes pour spécifier un contrôleur non standard ou il va générer des itinéraires aux contrôleurs par défaut fournis par la pierre précieuse:

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