我正在使用oauth2 gem进行google登录验证。我的代码看起来像
omniauth.rb公司

OmniAuth.config.logger = Rails.logger
require "omniauth-google-oauth2"
Rails.application.config.middleware.use OmniAuth::Builder do
  provider :google_oauth2, 'secret-client-id', 'secret-number', {client_options: {ssl: {ca_file: Rails.root.join("cacert.pem").to_s}}}
end

我的路线.rb
  get 'auth/:provider/callback', to: 'sessions#create'
  get 'auth/failure', to: redirect('/')

我的观点
 <%= link_to "Sign in with Google", "/auth/google_oauth2", id: "sign_in" %>

我在这几页之后得到这个网址
ruby-on-rails - 导轨中的Oauth 2“redirect_uri_mismatch:{“错误”:“redirect_uri_mismatch“}”-LMLPHP
ruby-on-rails - 导轨中的Oauth 2“redirect_uri_mismatch:{“错误”:“redirect_uri_mismatch“}”-LMLPHP
我哪里做错了?

最佳答案

尝试将令牌添加到omniauth初始值设定项:

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :google_oauth2, "id", "secret", {
    client_options: {ssl: {ca_file: Rails.root.join("cacert.pem").to_s}},
    scope: 'email profile',
    access_type: 'online',
    setup: (lambda do |env|
      request = Rack::Request.new(env)
      env['omniauth.strategy'].options['token_params'] = {:redirect_uri => 'http://.../auth/google_oauth2/callback'}
    end)
}
end

07-26 09:35
查看更多