2017-10-05 19 views
0

Facebook에서 로그인 기능을 생성하기 위해 Rails 5 API 전용 앱을 만들려고합니다.레일즈 5 API 만 Devise, OmniAuth, Devise Token으로 로그인하십시오. 페이스 북에 로그인 할 때 Auth 콜백 문제가 발생했습니다.

나는 다음과 같은 보석을 사용하고 있습니다 :
devise_token_auth
omniauth_facebook

내가 따랐다 문서를 devise_token_auth에 응용 프로그램을 만들 수 있습니다. 그들에 의해 제공된 demo app도 비슷한 오류를 가지고 있습니다.

성공적으로 로그인 할 수 있습니다. 사용자가 토큰을 수신하면 sign_in_count이 증가하지만 해당 콜백이 빈 페이지가있는 http://localhost:8000/auth/facebook/callback#_=_으로 이어집니다.

다음은 요청의 콘솔 로그입니다 :

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) 

나는 또한 omniauth_callbacks_controller.rb을 추가 한하지만 아무 효과가 없습니다.

코드 : https://github.com/tannakartikey/rails_api/

답변

1

바닐라가 아닌 표준 컨트롤러를 지정 경로에서 옵션을 전달해야 고안 아니면 보석에서 제공하는 기본 컨트롤러에 경로 생성 것처럼 :

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