2015-10-26 3 views
2

Я использую oauth2 gem для аутентификации google. Мой код выглядитOauth 2 "redirect_uri_mismatch: {" error ":" redirect_uri_mismatch "}" в rails

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 

мой routes.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" %> 

Я получаю этот URL после этой страницы enter image description here

enter image description here

Где я буду неправильно?

ответ

0

Попробуйте добавить маркер к 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 
Смежные вопросы