Ruby 无法使用omniauth-Google-oauth2使用Google plus登录

Ruby 无法使用omniauth-Google-oauth2使用Google plus登录,ruby,ruby-on-rails-4,omniauth,google-authentication,spree-auth-devise,Ruby,Ruby On Rails 4,Omniauth,Google Authentication,Spree Auth Devise,我在基于spree(ruby on rails)构建的应用程序中使用gem“omniauth-google-oauth2”将google plus登录集成到我们的网站上。我在这里遇到一个非常奇怪的错误,它在开发中运行良好(localhost), 但在生产中,我得到了这个错误 “auth/google_oauth2/callback?state=35ad3c2e3f8327a5b96df7ce7e2439a77b90dfebc41f8463&code=4/p5l-nug7FU3P8lfnSHNF8

我在基于spree(ruby on rails)构建的应用程序中使用gem“omniauth-google-oauth2”将google plus登录集成到我们的网站上。我在这里遇到一个非常奇怪的错误,它在开发中运行良好(localhost), 但在生产中,我得到了这个错误

“auth/google_oauth2/callback?state=35ad3c2e3f8327a5b96df7ce7e2439a77b90dfebc41f8463&code=4/p5l-nug7FU3P8lfnSHNF8Uy_tYXcLyqc0bnABoGo0EI”

为了集成GooglePlus,我做了以下工作

a、 )通过添加必要的javascript源代码和重定向url,我在google开发者控制台中创建了一个WebApplication应用程序

b、 )我在我的coonfig文件中添加了客户id和secret OmniAuth.config.logger=Rails.logger

Rails.application.config.middleware.use OmniAuth::Builder do

提供者:google_oauth2,“我的cient id”,“secret”

结束

c、 )我添加了一个路由“auth/google\u oauth2/callback”


我在这里安静地呆了一段时间。

我已经为很多应用程序使用了google-omniauth-oauth2

根据我的经验,我给你一些提示

一些可能的原因可能是

  • 您已将您的产品url添加到google控制台,但可能错过了产品的回调url
  • 检查路由并查看是否添加了回调路由。通常,它应该指向SessionController中的方法“sessions#create”
  • 在omniauth.rb中尝试以下操作

    Rails.application.config.middleware.use OmniAuth::Builder do
      provider :google_oauth2, 'GOOGLE_CLIENT_ID', 'GOOGLE_CLIENT_SECRET
      {
          :access_type => 'offline',
          :prompt => 'consent'
      }
    
    以下是我的会话#创建方法供您参考

        def create
            auth = request.env['omniauth.auth']
            @user = User.find_by_email(auth.info.email) || User.create_with_omniauth(auth)
            if !@user.country
              @user.country = request.location.country
            end
            @user.update_tokens auth
            reset_session
            session[:user_id] = @user.id
            redirect_to new_video_path, :notice => 'Signed In!'
       end
    

    有关更多帮助,请查看链接。

    您是否在谷歌控制台中添加了产品url?是的,Gagan,我已添加了iThanks,以感谢您的回复vipul,我验证了第1点和第2点,并相应地更改了omniauth.rb文件,但我得到了相同的错误auth/google_oauth2/callback?state=94fef1d37b059a495f93ad5901f0499ea250dc903f7ed6fd&code=4/8KmdToVb86NMLIAjB_yTXWM9TagJ8vAktQuWzIK7Dg0#@ShakthiSadras我刚刚再次查看了您的错误,并在我的应用程序中尝试了它。这并不是您所遇到的错误。一旦创建了会话,您需要将用户引导到某个页面,而您似乎并没有这样做。在“会话#创建”方法结束时,只需将重定向#u放到某个路径。例如根路径。@ShakthiSadras我已经编辑了我的答案。请参阅最后一行,错误将消失。再次感谢您的回复。我使用的函数“create”与您在评论中提到的相同。但是仍然无法登录,当我检查我的生产日志时,我发现没有调用函数会话#createall@ShakthiSadras这不是一个错误。您需要为会话创建视图#创建。我相信你已经做到了。或者,如果成功,您应该重定向到另一个视图。