0

我收到此错误:OAuth2::Error redirect_uri_mismatch

这就是我根据omniauth-google-oauth2 的文档设置omniauth.rb 的方式。

# config/initializers/omniauth.rb
OmniAuth.config.logger = Rails.logger
OmniAuth.config.full_host = Rails.env.production? ? 'https://www.********.org' : 'http://localhost:3000'

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :facebook, ENV['FACEBOOK_OAUTH_CLIENT_ID'], ENV['FACEBOOK_OAUTH_SECRET']
  provider :google_oauth2, ENV['GOOGLE_OAUTH_CLIENT_ID'], ENV['GOOGLE_OAUTH_SECRET'], {scope: 'profile', image_aspect_ratio: 'square', image_size: 48, access_type: 'online'}
end

这就是我设置 routes.rb 来处理回调的方式:

# config/routes.rb
  get 'auth/:provider/callback', to: 'sessions#create'

这是我的 Google Developer Console 的屏幕截图,我将授权的重定向 uri 设置为http://localhost:3000/auth/google_oauth2/callback.

我已经尝试过它和http://localhost:3000其他几种变体一样。httpshttp://localhost/auth/google_oauth2/callback

有人说控制台可能需要一段时间才能更新,所以我想知道我是否有可能在某个时候尝试了正确的事情并且没有给它足够的时间(超过 5 分钟?)来更新。

Facebook 的回调(http://localhost:3000/auth/facebook/callback在 Facebook 开发人员控制台上)有效,将我一直带到 SessionsController 的 #create 操作,我还没有添加处理它的方法,所以它在那里抛出了一个错误。

谁能发现我做错了什么!?

4

0 回答 0