Den*_*ees 49 java youtube-api google-oauth youtube-data-api google-oauth-java-client
我正试图从我的基于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/"]
}
}
Run Code Online (Sandbox Code Playgroud)
我如何从Google获取默认网址?
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-rc和google-api-services-youtubeAnalytics v1-rev35-1.17.0-rc
jlm*_*ald 34
当您的浏览器将用户重定向到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
Run Code Online (Sandbox Code Playgroud)
(作为参数传递的回调URI必须是url编码的,顺便说一句).
当Google的服务器获得用户授权时,它会将浏览器重定向到您发送的任何内容redirect_uri.它会在该请求中包含令牌作为参数,因此您的回调页面可以验证令牌,获取访问令牌,然后转到应用的其他部分.
如果您访问:
http://code.google.com/p/google-api-java-client/wiki/OAuth2#Authorization_Code_Flow
您可以在那里看到更好的Java客户端示例,证明您必须覆盖该getRedirectUri方法以指定您的回调路径,因此不使用默认值.
由于client_secrets.json多种原因,重定向URI位于文件中...一个大的原因是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 快速入门
| 归档时间: |
|
| 查看次数: |
112884 次 |
| 最近记录: |