【问题标题】:Keep getting Error: redirect_uri_mismatch using youtube api v3不断收到错误:redirect_uri_mismatch using youtube api v3
【发布时间】:2014-05-28 08:36:51
【问题描述】:

您好,希望有人能帮帮我。

我的本​​地计算机上有一个 Web 应用程序 (asp.net),我正在尝试使用此示例将视频上传到 YouTube https://developers.google.com/youtube/v3/code_samples/dotnet#upload_a_video

当我尝试上传视频时,我已经在 Google 控制台中为 Web 应用程序设置了客户端 ID 和密码,浏览器选项卡打开以选择我的一个谷歌帐户,一旦我登录,我得到 redirect_uri_mismatch 该页面上的响应详细信息如下:

cookie_policy_enforce=false
scope=https://www.googleapis.com/auth/youtube.upload
response_type=code
access_type=offline
redirect_uri=http://localhost:55556/authorize/
pageId=[some page id removed here for security reasons]
display=page
client_id=[some unique id removed here for security reasons].apps.googleusercontent.com

一件有趣的事情是redirect_uri=http://localhost:55556/authorize/ 与谷歌控制台中设置的完全不同,而client_secrets.json 中的设置也完全不同,每次我收到错误页面时端口号都会更改。

reduce url 和 origins 在 Google 控制台中设置如下我想我已经添加了所有组合以防万一:

授权重定向 URI

http://localhost/
https://localhost/
http://localhost:50169/AddContent.aspx
https://localhost:50169/AddContent.aspx
http://localhost:50169

授权的 JavaScript 来源

http://localhost/
https://localhost/
http://localhost:50169/
https://localhost:50169/

我不确定为什么错误页面上的 redirect-uri 与任何 我在 Google 控制台中指定的授权重定向 URI?有什么想法吗?

还有可能在 Google 控制台和我的代码中所有设置都正确,但是这个错误是由其他东西触发的,比如我可能错过了我的油管帐户上的一些设置?我没有进行任何设置更改,因为我认为我不必这样做是正确的吗?

【问题讨论】:

  • 你搞定了吗?
  • 不,Google/YT 已经改变了他们的库,你不能再这样做了,但是现在已经几个月了,我已经把这个功能留在了我的项目中并专注于其他人。我认为您可以改用不同的免费视频共享选项。我还注意到一些网站曾经使用 YT 进行视频共享,现在他们使用其他一些第三方,所以不确定。但请告诉我你的情况。

标签: c# youtube oauth-2.0 google-api


【解决方案1】:

好吧,根据这些帖子,我相信 YT API v3.0 不再支持将视频直接上传到网站所有者帐户。

Can YouTube Direct Upload to a Common Account for All Users?

How can I get the youtube webcam widget to upload to one account using API?

不好意思,我想我需要托管用户在我的服务器上上传的视频。

但是,通过将此 URI 添加到开发者控制台中的重定向 URI 解决了原始问题

http://localhost/authorize/

Google OAuth 2 authorization - Error: redirect_uri_mismatch

【讨论】:

  • 感谢 IronHide。 localhost/authorize 也为我工作。甚至可以在安全协议上工作,例如 localhost/authorize
  • localhost/authorize 也对我有用,也许是在隐身窗口中请求页面的事实。
  • 难以置信的是,这任何地方都没有记录
【解决方案2】:

我通过将重定向 URI 设置为完全这样来让它工作:

http://localhost:50517/signin-google

注意: - 它不适用于尾部斜杠 - 端口号是您的视觉工作室分配的任何内容 - 我将 JavaScript Origins 设置为:

http://localhost:50517/

不过,如果有人真的在某个地方记录了这一点,那就太好了……

【讨论】:

  • 是否需要“signin-google”部分?我虽然应该将其设置为您希望用户在登录后被重定向到的位置?因此,如果您希望用户被重定向到某个页面,例如 myPage.aspx,则重定向 URI 将是 localhost:50517/myPage.aspx
  • 奇怪的是,在错误页面上,当我检查详细信息时,我得到了这个 redirect_uri=localhost:55556/authorize,我不知道 55556 是从哪里出现的,以及重定向 uri 是如何从里面的内容改变的client_secret.json
  • 这对我不起作用 :( 与@IronHide 相同的问题
【解决方案3】:

您应该查看创建授权 URI 的代码。您需要传递您在 Google 开发者控制台中注册的重定向 URI 之一。我猜你正在使用一些使用 localhost:port/authorize 作为默认重定向 URI 的 OAuth2 库。端口会发生变化,因为每次启动本地服务器时,它都会选择不同的端口号。要修复它,您应该在启动它时指定一个端口号,例如 8080。然后您应该在 Google 开发者控制台中注册 localhost:8080/AddContent.aspx 并将其传递给您用于创建授权 URI 的任何库。

【讨论】:

  • 正如我所提到的,我已经密切关注上面链接中的示例代码。重定向 URI 在 client_secret.json 中设置我相信 OAuth2 使用在 client_secret.json 文件中指定的重定向 url。我的本地主机的端口号已经设置为静态并且永远不会更改(50169),并且在 client_secret.json 中是相同的。
  • 没有人可以回答这个问题或帮助?
【解决方案4】:

我在尝试为 Drive REST API 设置 quickstart 应用程序时遇到了类似的问题。我不断收到 redirect_uri_mismatch 错误,并且出现该错误的端口号不断变化。我的解决方法是在 Google Developers Console 中为我的应用更改重定向 URI,使其不包含端口号。

【讨论】:

    【解决方案5】:

    有一个非常简单的方法可以解决这个问题,当我意识到这一点时,我踢了自己。

    我正在使用“Web 应用程序”凭据 - 您需要打开凭据管理器。

    运行 DotNet 示例应用程序并打开浏览器(我得到“选择帐户”页面) - 然后在 URL 中查找由 Google 代码自动生成的重定向 URI,例如:

    redirect_uri%3Dhttp://localhost:62041/authorize/
    

    然后只需转到凭据管理器并将此 URL 添加到允许列表并保存。现在选择您的 google 帐户,看看会发生什么 - API 需要几分钟才能更新 - 如果您收到重定向错误页面,只需回击并再次选择您的帐户 - 最终它会正常工作并返回到 Visual Studio。

    一旦帐户被授权,一旦它粘住(清除 bin 目录以取消粘住它),但这意味着您现在可以在代码中放置一个断点并查看凭据变量以获取每个人都如此拼命尝试的刷新令牌以便您可以保持帐户连接。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-05
      • 2014-08-29
      • 2017-04-10
      • 2023-03-30
      • 2021-03-03
      • 2015-04-28
      • 2016-11-28
      • 2015-12-12
      相关资源
      最近更新 更多