73

我正在尝试从我的基于 Java 的网络应用程序上传到 YouTube,我花了几天时间来了解问题出在哪里以及问题出在哪里,但我无法得到它,现在我正把头发从头上扯下来。

我在 Google Console 中注册了我的网络应用程序,因此我得到了一对客户端 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 获得默认 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

4

5 回答 5

66

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

1)转到谷歌开发者控制台

2) 设置 JavaScript 来源:

3)设置重定向URI:

于 2015-05-15T01:03:13.490 回答
43

当您的浏览器将用户重定向到 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 方法被覆盖以使用您的特定回调。

于 2014-04-03T06:18:15.660 回答
8

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

授权的 JavaScript 来源

http://localhost

授权的重定向 URI

http://localhost:8090/oauth2callback

注意:我使用端口 8090 而不是 8080,但这并不重要,只要您的 python 脚本使用与您的 client_secret.json 文件相同的端口即可。

参考:Python 快速入门

于 2017-11-08T01:48:32.743 回答
4

您需要进入开发者控制台并设置

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

作为您的回调 URL。

该视频略微过时,因为它显示的是旧版开发者控制台而不是新版,但是,这些概念仍应适用。您需要在开发者控制台中找到您的项目并注册一个回调 URL

于 2014-03-25T15:25:11.830 回答
0

我以为我已经配置了这个,但事实证明我将 URL 设置在错误的位置。我按照 Google 错误页面中提供的 URL 并在此处添加了我的 URL。我犯了一个愚蠢的错误,但很容易做到。希望这可以帮助

于 2019-09-21T16:47:44.257 回答