0

因此,我尝试将 Google OAuth2 与我的应用程序中的设计集成,但在登录并允许访问该应用程序后,由于某种原因,我被重定向回登录页面。我正在使用以下教程:

https://www.digitalocean.com/community/tutorials/how-to-configure-devise-and-omniauth-for-your-rails-application

这是我的文件:

callbacks_controller.rb

class CallbacksController < Devise::OmniauthCallbacksController
  def google_oauth2
    # You need to implement the method below in your model (e.g. app/models/user.rb)
    @user = User.from_omniauth(request.env["omniauth.auth"])

    if @user.persisted?
      flash[:notice] = I18n.t "devise.omniauth_callbacks.success", :kind => "Google"
      sign_in_and_redirect @user, :event => :authentication
    else
      session["devise.google_data"] = request.env["omniauth.auth"]
      redirect_to new_user_registration_url
    end
  end

end

路线.rb:

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

用户.rb:

def self.from_omniauth(auth)
    where(provider: auth.provider, uid: auth.uid).first_or_create do |user|
        user.provider = auth.provider
        user.uid = auth.uid
        user.email = auth.info.email
        user.password = Devise.friendly_token[0,20]
    end
end

设计.rb:

config.omniauth :google_oauth2, ENV['GOOGLE_CLIENT_ID'], ENV['GOOGLE_CLIENT_SECRET'], callback_url: ENV['GOOGLE_CALLBACK_URL']

我究竟做错了什么?谢谢

4

1 回答 1

0

尝试这个:

class ApplicationController < ActionController::Base
  def after_sign_in_path_for(resource)
    # return path you want to go to...
  end
end
于 2016-11-21T12:57:22.340 回答