0

spree (ruby-on-rails) で構築されたアプリケーションで gem "omniauth-google-oauth2" を使用して、Google とサイトへのログインを統合しています。ここで非常に奇妙なエラーが発生します。 )、しかし本番環境ではこのエラーが発生しています

"auth/google_oauth2/callback?state=35ad3c2e3f8327a5b96df7ce7e2439a77b90dfebc41f8463&code=4/p5l-nug7FU3P8lfnSHNF8Uy_tYXcLyqc0bnABoGo0EI#".

Googleプラスを統合するために、次のことを行いました

a.) 必要な JavaScript オリジンとリダイレクト URL を追加して、Google 開発者コンソールで WebApplication アプリを作成しました。

b.) coonfig ファイルにクライアント ID、シークレットを追加しました OmniAuth.config.logger = Rails.logger

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

プロバイダー:google_oauth2, 'my cient id', 'secret'

終わり

c.) ルート「auth/google_oauth2/callback」を追加しました

私はここでしばらく静かにしていました。

4

1 に答える 1

0

かなりの数のアプリに対して google-omniauth-oauth2 を実行しました。

私の経験に基づいて、私はあなたにいくつかのヒントを与えています。

考えられる理由のいくつかは次のとおりです。

  1. 本番用の URL を Google コンソールに追加しましたが、本番用のコールバック URL を見逃している可能性があります。
  2. ルートを確認し、コールバック ルートを追加したかどうかを確認します。通常は、SessionsController のメソッド「sessions#create」を指す必要があります。

omn​​iauth.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

詳細については、このリンクを確認してください。

于 2015-12-24T10:18:01.217 に答える