我正试图从我的基于Java的web应用程序上载到YouTube,我花了几天时间来了解问题是什么和在哪里,我无法得到它,现在我把我的头发从我的头上拔出来。
我在谷歌控制台注册了我的web应用程序,所以我得到了一对客户端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/"]
}
}
我怎么可能从谷歌得到默认的URL ?
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-youtubeAnalytics v1-rev35-1.17.0-rc
我想我遇到了和你一样的问题。我用以下步骤解决了这个问题:
1)打开Google Developers Console 2)设置JavaScript的起始点:- http://localhost
http://localhost: 8080
http://localhost: 8080/回调
当您的浏览器将用户重定向到Google的oAuth页面时,您是否将希望Google服务器使用令牌响应返回的重定向URI作为参数传递?在控制台中设置重定向URI并不是告诉谷歌当登录尝试进入时该去哪里,而是告诉谷歌允许的重定向URI是什么(所以如果其他人用你的客户端ID编写web应用程序,但使用不同的重定向URI,它将被禁止);当有人点击"login"按钮时,你的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
方法来指定回调路径,这样就不会使用默认路径。
重定向uri在client_secrets.json
文件中有多种原因…一个重要的原因是,oAuth流可以验证你的应用指定的重定向是否匹配你的应用允许的重定向。
如果你访问https://developers.google.com/api-client-library/java/apis/youtube/v3,你可以在控制台直接基于你的应用程序为自己生成一个示例应用程序,其中(再次)getRedirectUri方法被覆盖以使用你的特定回调。
我能够使用以下客户端凭据使我的工作:
授权JavaScript来源
http://localhost
授权重定向uri
http://localhost:8090/oauth2callback
注意:我使用端口8090而不是8080,但这并不重要,只要你的python脚本使用相同的端口作为你的client_secret。json文件。
参考:Python快速入门您需要进入开发控制台并设置
http://localhost:8080/WEBAPP/youtube-callback.html
作为回调URL。
这个视频有点过时了,因为它展示的是旧的开发者控制台而不是新的,但是,这些概念应该仍然适用。您需要在开发控制台找到您的项目并注册一个回调URL。
我以为我已经配置了这个,但事实证明我在错误的地方设置了URL。我按照谷歌错误页面提供的URL在这里添加了我的URL。我犯了一个愚蠢的错误,但很容易犯。希望对大家有所帮助