当前位置: 首页 > 面试题库 >

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

上官正志
2023-03-14
问题内容

我试图从基于Java的网络应用程序上传到YouTube,花了几天的时间来了解问题所在和出处,但我无法解决,因为现在我将头发拔掉了。

我在Google控制台中注册了Web应用程序,因此获得了一对Client ID和Secret,并可以通过配置下载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获取默认URL?

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

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

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-rcgoogle-api-
services-youtubeAnalytics v1-rev35-1.17.0-rc


问题答案:

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

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方法以指定回调路径,因此不使用默认值。

重定向URIs存在于client_secrets.json文件中的原因有很多……其中一个重要原因是,oAuth流可以验证您的应用程序指定的重定向是否与您的应用程序所允许的匹配。

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



 类似资料:
  • 我正在通过这个sdk集成Instagram登录https://github.com/crino/instagram-ios-sdk 我用重定向URI"http://www.webvillee.com/callback"注册了我的应用程序,并获得了客户端ID和秘密ID。 现在,当我想通过应用程序登录时,它显示错误400“重定向URI与注册的重定向URI不匹配”。 我还试图在安全会话中用ig Clie

  • 问题内容: 尝试运行我的应用程序时出现此错误… 在Google API控制台中,我已经注册了重定向网址 而且在client_secrets.json中,我也使用与重定向URL相同的名称,我在遵循本教程 https://developers.google.com/bigquery/articles/dashboard#addoauth2 编辑: 我刚刚对现有代码进行了一些更改 现在 这是我的app.

  • 我的DocuSign重定向URI似乎有错误。登录时它似乎没有正确注册。 错误:“重定向URI未正确注册到DocuSign”。

  • 使用授权代码流拥有一个受Spring Security oAuth2保护的Spring boot mvc应用程序。当在本地机器上部署和运行时,应用程序将重定向到正确的重定向uri以进行登录。但是在我们的kubernetes部署中,应用程序前面有一个api网关,可以通过以下路径访问应用程序 https:/// 其中k8名称空间名称是kubernetes名称空间名称,app名称是应用程序在名称空间中的

  • 我试图发出授权请求,但收到错误: 重定向URI未正确注册到DocuSign 这是我正在使用的URL: https://account-d.docusign.com/oauth/auth?response_type=code 这是我注册的重定向URI,与上面的URL匹配: 这是错误: 客户端id与integrator密钥匹配。 有什么指点吗?

  • 我正在尝试让Spotify API与AngularJS一起工作。我在授权阶段收到一个无效的重定向URI错误(https://developer.spotify.com/web-api/authorization-guide/). 我在白名单中添加了redirect_uri,当我有一个uri,比如 但当我有一个带有散列的URI时,它就不起作用了 我想使用后者URI的原因是因为前者我得到了一个URI,