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

时间:2015-12-24 07:00:47

标签: ruby ruby-on-rails-4 omniauth google-authentication spree-auth-devise

我在使用spree(ruby-on-rails)构建的应用程序中使用gem“omniauth-google-oauth2”来集成Google plus登录到我们的网站。我在这里得到一个非常奇怪的错误,它工作正常发展(本地主机)  但在生产中我收到此错误

“AUTH / google_oauth2 /回调状态= 35ad3c2e3f8327a5b96df7ce7e2439a77b90dfebc41f8463&安培;代码= 4 / P5L-nug7FU3P8lfnSHNF8Uy_tYXcLyqc0bnABoGo0EI#”。

为了整合Google +,我已经完成了以下

a。)我在谷歌开发者控制台中创建了一个WebApplication应用程序,添加了必要的javascript源并重定向了URL

b。)我在我的coonfig文件中添加了客户端ID,秘密 OmniAuth.config.logger = Rails.logger

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

提供者:google_oauth2,'my cient id','secret'

c。)我添加了一条路线'auth / google_oauth2 / callback'

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

1 个答案:

答案 0 :(得分:0)

我为很多应用做了google-omniauth-oauth2。

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

一些可能的原因可能是

  1. 您已将您的生产网址添加到Google控制台,但可能错过了回调网址以供制作。
  2. 检查路由并查看是否添加了回叫路由。通常它应该指向SessionsController中的方法'sessions #create。
  3. 在omniauth.rb

    中尝试以下操作
    Rails.application.config.middleware.use OmniAuth::Builder do
      provider :google_oauth2, 'GOOGLE_CLIENT_ID', 'GOOGLE_CLIENT_SECRET
      {
          :access_type => 'offline',
          :prompt => 'consent'
      }
    

    以下是我的会话#create方法供您参考

        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
    

    如需更多帮助,请查看this链接。