我很抱歉发布这样一个蹩脚的问题,但我设法使用omniauth与facebook,twitter甚至linkedin,但我仍然无法用谷歌omniauth 2.0,我发现这个问题与回调URI(我必须补充说我正在测试本地环境[localhost]),所以我试图通过以下方式更改URI
http:127.0.0.1:3000 / auth / google_oauth2 / callback /
http:127.0.0.1:3000 / auth / google_oauth2 / callback
https:127.0.0.1:3000 / auth / google_oauth2 /回拨/
https:127.0.0.1:3000 / auth / google_oauth2 / callback
http:localhost:3000 / auth / google_oauth2 / callback /
http:localhost:3000 / auth / google_oauth2 / callback *
https:localhost:3000 / auth / google_oauth2 / callback /
https:localhost:3000 / auth / google_oauth2 / callback
到目前为止,我已经单独尝试了每一个,但没有一个工作,看起来标有*的那个是我的浏览器返回的那个,但仍然接收
The redirect URI in the request:
http://localhost:3000/auth/google_oauth2/callback did not match a
registered redirect URI
我在那里寻找关于如何执行此身份验证的答案,或者如何为localhost回调正确设置回调URI。提前谢谢。
顺便说一句:我使用的是Rails 4和omniauth,omniauth-google-oauth2 gems BTW2:我删除了“//”所以这些不会被视为链接
答案 0 :(得分:1)
确保您在线访问类型
config.omniauth :google_oauth2, "[my key]", "[secret]", {access_type: 'online'}
答案 1 :(得分:0)
此代码适用于我。在多个环境中使用Google Drive API。 你的“AUTHORIZED REDIRECT URIS”应如下所示(我正在使用google,你的可能是google_oauth2。更改了omniauth配置文件的提供程序选项)。 新行上的每个URI。
http://localhost:3000/auth/google/callback
https://staging_server/auth/google/callback
https://production_server/auth/google/callback
我的client_id,client_secret位于'config / google_client.yml'。 'config / initializers'中的'omniauth.rb'文件应如下所示
google_client = YAML.load_file("#{Rails.root.join('config/google_client.yml')}")
ENV['GOOGLE_APP_NAME'] = google_client['APP_NAME']
ENV['GOOGLE_CLIENT_ID'] = google_client['CLIENT_ID']
ENV['GOOGLE_CLIENT_SECRET'] = google_client['CLIENT_SECRET']
ENV['GOOGLE_CLIENT_SCOPE'] = google_client['CLIENT_SCOPE']
Rails.application.config.middleware.use OmniAuth::Builder do
provider :google_oauth2, ENV["GOOGLE_CLIENT_ID"], ENV["GOOGLE_CLIENT_SECRET"],
{ name: "google",
scope: ENV['GOOGLE_CLIENT_SCOPE'],
prompt: "consent"
}
end
OmniAuth.config.on_failure = SomeController.action(:oauth_failure)
希望这会对你有所帮助。