4

Google APIにアクセスする必要があります.Devise 2.1.1とOmniauthを使用してユーザーにGoogleアカウントでログインさせようとしています( google_oauth2OAuth2はGoogleドキュメントから推奨されているため、gemを使用しています)。

残念ながら、私はそれを機能させることができません。これはroutes.rb

TestApp::Application.routes.draw do
  root :to => 'Landing#index'

  devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" }

  devise_scope :user do
    get 'sign_in', :to => 'users/sessions#new', :as => :new_session
    get 'sign_out', :to => 'users/sessions#destroy', :as => :destroy_session
  end
end

次にconfig/initializers/devise.rb、次の行を含めるように構成しました

  config.omniauth :google_oauth2, 'ID', 'SECRET', {access_type: 'offline', approval_prompt: 'force', scope: 'https://www.googleapis.com/auth/analytics.readonly'}

そして実際に私は無効なコールバッククラスを持っていますapp/controllers/users/omniauth_callbacks_controller.rb

class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
end

[Google でサインイン] をクリックすると、Google にリダイレクトされ、承認を求められた後、コールバックに戻りhttp://localhost:3000/sign_in.user、エラーのある URL にリダイレクトされます。

uninitialized constant Users::SessionsController

ここで何が問題なのですか?私は自分でそれを理解しようとして2日を費やしました.多くの構成で遊んだのですが、うまくいきません.イライラし始めています.

これはからの出力ですrake routes

root     /                                      Landing#index
user_omniauth_authorize     /users/auth/:provider(.:format)        users/omniauth_callbacks#passthru {:provider=>/google_oauth2/}
user_omniauth_callback     /users/auth/:action/callback(.:format) users/omniauth_callbacks#(?-mix:google_oauth2)
new_session GET /sign_in(.:format)                     users/sessions#new
destroy_session GET /sign_out(.:format)                    users/sessions#destroy    
4

1 に答える 1