使用 omniauth-google-oauth2 redirect_uri_mismatch 进行身份验证

Posted

技术标签:

【中文标题】使用 omniauth-google-oauth2 redirect_uri_mismatch 进行身份验证【英文标题】:Authenticating with 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?我尝试将它们用“,”分隔,或者简单地用空格分隔,因为没有一个有效,那么我真的不知道什么是正确的方式。

【问题讨论】:

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

希望对你有所帮助。

【讨论】:

以上是关于使用 omniauth-google-oauth2 redirect_uri_mismatch 进行身份验证的主要内容,如果未能解决你的问题,请参考以下文章

redis的使用场景

无法使用rbenv使用ruby版本2.4.2p198

Hydra(九头蛇)工具使用

使用 Java 11 玩 2.2.2

如何移植使用“$@:2”?

容器技术——Docker基本使用