与Heroku上的OmniAuth Google oauth2的redirect_uri_mismatch

问题描述 投票:0回答:1

我正在尝试使用Google Auth使用OmniAuth设置一个简单的Rails应用程序。

在heroku上运行应用程序时,尝试直接或通过重定向访问oauth路由时出现以下错误:

redirect_uri_mismatch

请求详细信息:

access_type=offline
client_id=631910956855-pbglluk1ofb6vjmub9a0fucs8b0r5map.apps.googleusercontent.com
redirect_uri=http://stock-scrapper-rails.herokuapp.com/auth/google_oauth2/callback
response_type=code
scope=email profile
state=94be59d4d241b70c83406ce59c36e7fc8d50279c

在本地可以正常工作。我尝试使用ngrok隧道,它也可以工作。

完整网址:https://accounts.google.com/o/oauth2/auth?access_type=offline&client_id=631910956855-pbglluk1ofb6vjmub9a0fucs8b0r5map.apps.googleusercontent.com&redirect_uri=https%3A%2F%2Fstock-scrapper-rails.herokuapp.com%2Fauth%2Fgoogle_oauth2%2Fcallback&response_type=code&scope=email+profile&state=ac4cf27b4e2b534d854136ad25a102e2c1ff772d07dc84b8

我的应用托管在http://stock-scrapper-rails.herokuapp.com您可以自己去/ auth / google_oauth2查看错误。

我已经搜索了一下,但无法解决问题。这是我已经尝试/完成的,但是没有解决问题:

  • 将域添加到授权域
  • 对类似问题的一些答案建议等待,因为有时google需要一段时间才能使Google更新对域的更改。但是,我已经等了几个小时,错误仍然存​​在
  • 双/三重检查我的环境变量在Heroku上是否正确
  • 已检查的Heroku日志;那里没有错误
  • 手动设置OmniAuth.config.full_host

回叫路线:

get '/auth/google_oauth2/callback', to: 'auth#oauth_callback'

顺便说一下,我没有使用devise。目前,我只希望控制器在会话中存储一些数据:

class AuthController < ApplicationController

  def oauth_callback
    authentication_google_data = request.env['omniauth.auth'].except(:extra)
    user_email = authentication_google_data['info']['email']
    # rest ommited
  end
end

OmniAuth配置:

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :google_oauth2, ENV['GOOGLE_CLIENT_ID'], ENV['GOOGLE_CLIENT_SECRET']
end

相关的宝石版本:

  • rails(6.0.2.1)
  • omniauth(1.9.0)
  • omniauth-google-oauth2(0.8.0)
  • omniauth-oauth2(1.6.0)

也尝试将omniauth-oauth降级到1.3.1,因为读取到存在引起类似问题的版本,但没有成功。

关于我可以尝试的其他任何想法都将非常有帮助:)

ruby-on-rails ruby heroku omniauth google-oauth2
1个回答
0
投票

我想出了问题所在。在我的应用程序的Google Developer Console上,OAuth 2.0客户端ID,我创建了一个类型为“其他”而不是“ Web应用程序”的ID。

https://console.cloud.google.com/apis/credentials?project=myproject上创建一个类型为“ Web应用程序”的新文件,并将回调URL(http和https)添加到授权重定向URI解决了该问题。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.