【问题标题】:Google Oauth Error: redirect_uri_mismatchGoogle Oauth 错误:redirect_uri_mismatch
【发布时间】:2016-06-07 08:59:56
【问题描述】:

我正在尝试使用 google Oauth 2 对在 AWS EC2 上运行的 Web 服务器使用 google 日历 API 进行身份验证。

当我生成凭据时,我选择了“OAuth 客户端 ID”,然后选择了“Web 应用程序”。对于我输入的授权重定向 URI:

http://ec2-XX-XX-XX-XXX.eu-west-1.compute.amazonaws.com (我已经清除了我的 EC2 实例的 IP)。我已经检查了这是我希望回调转到的正确 URL。

服务器日志中生成的链接格式为:

https://accounts.google.com/o/oauth2/auth?access_type=offline&client_id=XXXXXXXXXXXX-XXXXXXXXXXXXXX.apps.googleusercontent.com&redirect_uri=http://localhost:47258/Callback&response_type=code&scope=https://www.googleapis.com/auth/calendar.readonly

当我点击链接时,我得到了错误 '错误:redirect_uri_mismatch'。

我已阅读 this SO question 并检查我使用的是 HTTP 并且没有试用 '/'

我怀疑生成的 URL 中不应包含“localhost”,但我已多次重置 client_secret.json,并且每次使用新的客户端密码重新启动 tomcat 时,我仍然会获得与 localhost 的链接,但只是超过了不同的端口。

在本地,我之前选择了“其他”的凭据类型,但没有为授权重定向 URI 提供选项。我确实为 EC2 实例尝试了这个,但这不会让我控制我想要的重定向 URI 并通过 localhost 发送重定向。

【问题讨论】:

    标签: amazon-ec2 oauth google-calendar-api


    【解决方案1】:

    当请求提供的 uri(包括端口)与应用程序注册的不匹配时,Google 会抛出 redirect_uri_mismatch

    确保您在网络控制台上正确注册了Authorised redirect URIsAuthorised JavaScript origins

    这是一个适合我的示例配置。

    【讨论】:

    • 谢谢,问题是端口号
    • 这对我不起作用。 Google 继续将 localhost:XXXXX 添加为 redirect_uri,忽略为 OAuth 客户端设置的重定向 uri。怎么了?
    【解决方案2】:

    创建 Oath 客户端 ID 时,请勿选择 Web 应用程序,选择“其他”。这样,就不需要重定向 URI。

    【讨论】:

    • 不是一个可行的解决方案。如果要从浏览器中使用 Oauth,则需要使用“Web 应用程序”。它只是不适用于“其他”。
    猜你喜欢
    • 2014-02-09
    • 2015-04-03
    • 2020-11-08
    • 2019-07-14
    • 2021-06-14
    • 2012-07-14
    • 1970-01-01
    相关资源
    最近更新 更多