【问题标题】:YouTube API Browser-based upload with progress barYouTube API 基于浏览器的上传,带有进度条
【发布时间】:2012-11-12 09:37:52
【问题描述】:

我已经成功实现了“YouTube API Browser-Based Upload with Ajax Progress Bar”(感谢 youtube API 团队最近实现了对“uploads.gdata.youtube.com”的 CORS 支持)

但是,有一个障碍...在从 youtube API 返回的最终响应中,它尝试通过发送回位置重定向标头 (302) 来重定向浏览器...

虽然这可能在非 AJAX 场景下按预期工作,但在 AJAX 请求中是不允许的...

我看到了 3 种可能的解决方案,其中任何一种都可以正常工作...

  1. 如果 youtube API 允许一种方法来简单地取回刚刚上传的视频的“视频 ID”,而无需重定向到任何地方,这对每个人来说都会变得更加简单和容易......是我忽略了 API 中的任何此类选项?

  2. 或者在 AJAX 中有没有办法告诉请求,而不是遵循重定向标头?

  3. 或者有什么方法可以“允许”AJAX 请求场景中的跨域重定向? (重定向由 youtube.com 发起,而用户在另一个域上,因此存在跨域重定向问题)

【问题讨论】:

  • 感谢您的链接,但它不是我想要的...我希望通过 AJAX 上传文件(实际上我能够完成)。问题在于我从 youtube 返回的响应,这是一个重定向响应,而不是一些 JSON/HTML 输出。

标签: youtube youtube-api cors


【解决方案1】:

GData API 的 v1/v2 将不支持此功能。

对于 YouTube Data API v3,我有一个粗略但有效的示例,位于 https://youtube-api-samples.googlecode.com/git/yt-upload-javascript/index.html(源文件位于 https://code.google.com/p/youtube-api-samples/source/browse/#git%2Fyt-upload-javascript),它显示了上传流程,使用 Google+ 登录按钮处理 OAuth 2 (如果您愿意,可以使用普通的 OAuth 2 浏览器客户端流程)并带有进度指示器。它还展示了如何在上传后轮询视频处理状态,并在处理后将生成的视频嵌入页面。

【讨论】:

    【解决方案2】:

    这是一个已知的issue,它应该是固定的,但实际上它并没有固定。基于浏览器的上传方法(仅在 V2 上可用)不完全支持 CORS。您唯一的选择是通过您的服务器代理视频上传(很可能)或要求用户注册一个谷歌帐户并登录以使用 V3 API 上传视频(不好)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-10
      • 1970-01-01
      • 2013-06-02
      • 2013-07-06
      • 1970-01-01
      • 2011-09-17
      • 2017-10-22
      相关资源
      最近更新 更多