【问题标题】:Authenticating with omniauth-google-oauth2 redirect_uri_mismatch使用 omniauth-google-oauth2 redirect_uri_mismatch 进行身份验证
【发布时间】:2014-04-29 01:50:13
【问题描述】:

我很抱歉发布这样一个蹩脚的问题,但我已经设法将omniauth与facebook、twitter甚至linkedin一起使用,但我仍然无法使用google 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/callback/
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:我已经删除了“//”,所以这些不会被视为链接

  • 其他相关问题是,如何在重定向列表中添加多个 URI?我尝试将它们用“,”分隔,或者简单地用空格分隔,因为没有一个有效,那么我真的不知道什么是正确的方式。

【问题讨论】:

  • 看起来这是stackoverflow.com/a/20732762/325564的副本
  • 我试图做类似的事情,但它没有用,我已经设法让它工作,使用单个 URI,但我不能让它使用多个 URI,但是谢谢虽然
  • @Coronellx 您介意分享您的解决方案吗?我遇到了同样的问题,上述帖子对我也不起作用。

标签: ruby-on-rails authentication callback uri omniauth


【解决方案1】:

确保您将访问类型设为在线

config.omniauth :google_oauth2, "[my key]", "[secret]", {access_type: 'online'}

【讨论】:

    【解决方案2】:

    我猜你应该使用

    http://localhost:3000/用户/auth/google_oauth2/callback

    (你在中间错过了用户

    【讨论】:

      【解决方案3】:

      此代码对我有用。在多个环境中使用 Google Drive API。 您的“授权重定向 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)
      

      希望对你有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-06-24
        • 1970-01-01
        • 1970-01-01
        • 2015-03-24
        • 1970-01-01
        • 2012-11-20
        • 2021-01-16
        • 2015-10-04
        相关资源
        最近更新 更多