Google OAUTH:请求中的重定向URI与注册的重定向URI不匹配

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Google OAUTH:请求中的重定向URI与注册的重定向URI不匹配相关的知识,希望对你有一定的参考价值。

我试图从我的基于Java的网络应用程序上传到YouTube,我花了几天时间来了解问题的原因和地点,我无法得到它,因为现在我正在把头发拉出来。

我在Google控制台中注册了我的网络应用程序,因此我获得了一对客户端ID和密码以及使用我的配置下载JSON类型文件的可能性。

所以这是配置:

{
    "web":{
        "auth_uri":"https://accounts.google.com/o/oauth2/auth",
        "client_secret":"***",
        "token_uri":"https://accounts.google.com/o/oauth2/token",
        "client_email":"***",
        "redirect_uris":["http://localhost:8080/WEBAPP/youtube-callback.html","http://www.WEBAPP.md/youtube-callback.html"],
        "client_x509_cert_url":"***",
        "client_id":"***",
        "auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs",
        "javascript_origins":["http://www.WEBAPP.md/"]
    }
}

我如何从Google获取默认网址?

The redirect URI in the request: http://localhost:8080/Callback did not match a registered redirect URI

它总是给我默认的http://localhost:8080/Callback URL而不是我的。

IDE控制台告诉我:

Please open the following address in your browser: https://accounts.google.com/o/oauth2/auth?client_id=***&redirect_uri=http://localhost:8080/Callback&response_type=code&scope=https://www.googleapis.com/auth/youtube.upload Attempting to open that address in the default browser now...

我使用的是最新版本的依赖项:google-api-services-youtube v3-rev99-1.17.0-rc和google-api-services-youtubeAnalytics v1-rev35-1.17.0-rc

答案

当您的浏览器将用户重定向到Google的oAuth页面时,您是否将您希望Google服务器返回的重定向URI作为参数传递给令牌响应?在控制台中设置重定向URI并不是告诉Google在登录尝试时要去哪里的方式,而是告诉Google允许的重定向URI是什么(所以如果其他人在您的客户端写一个Web应用程序ID,但不允许使用不同的重定向URI);当有人点击“登录”按钮时,您的网络应用程序应将浏览器发送到:

https://accounts.google.com/o/oauth2/auth?client_id=XXXXX&redirect_uri=http://localhost:8080/WEBAPP/youtube-callback.html&response_type=code&scope=https://www.googleapis.com/auth/youtube.upload

(作为参数传递的回调URI必须是url编码的,顺便说一句)。

当Google的服务器获得用户的授权时,它会将浏览器重定向到您发送的任何内容,如redirect_uri。它会在该请求中包含令牌作为参数,因此您的回调页面可以验证令牌,获取访问令牌,然后转到应用的其他部分。

如果您访问:

http://code.google.com/p/google-api-java-client/wiki/OAuth2#Authorization_Code_Flow

你可以在那里看到更好的java客户端样本,证明你必须覆盖getRedirectUri方法来指定你的回调路径,所以不使用默认值。

由于多种原因,重定向URI位于client_secrets.json文件中...一个重要的是oAuth流可以验证您的应用指定的重定向是否与您的应用允许的匹配。

如果您访问https://developers.google.com/api-client-library/java/apis/youtube/v3您可以为自己生成一个示例应用程序,该应用程序直接基于您在控制台中的应用程序,其中(再次)覆盖getRedirectUri方法以使用您的特定回调。

另一答案

我想我遇到了和你一样的问题。我通过以下步骤解决了这个问题:

1)去Google Developers Console

2)设置JavaScript起源:

3)设置重定向URI:

另一答案

您需要进入开发人员控制台并进行设置

http://localhost:8080/WEBAPP/youtube-callback.html

作为您的回调网址。

This video略显过时,因为它显示的是较旧的Developer Console而不是新的,但是,这些概念仍然适用。你需要找到你的项目in the developer console and register a callback URL

另一答案

我能够使用以下客户端凭据让我的工作:

授权的JavaScript起源

http://localhost

授权重定向URI

http://localhost:8090/oauth2callback

注意:我使用端口8090而不是8080,但只要您的python脚本使用与client_secret.json文件相同的端口,这就无所谓了。

参考:Python Quickstart

以上是关于Google OAUTH:请求中的重定向URI与注册的重定向URI不匹配的主要内容,如果未能解决你的问题,请参考以下文章

redirect_uri_mismatch 请求中的重定向 URI 与授权给 OAuth 客户端的重定向 URI 不匹配

Azure AD B2C:请求中的重定向 URI 与授权给 OAuth 客户端的不匹配

OAuth2(授权代码授予类型)的重定向 URI 中是不是应该存在动态查询参数

在谷歌开发者控制台下设置新的clientId时“授权的重定向URI”是强制性的吗?

什么是 Youtube API 中的重定向 URI?

如何从 Java 桌面应用程序中的重定向 uri 获取 facebook 代码