3

我已经成功实现了“使用 Ajax 进度条的基于浏览器的 YouTube API 上传”(感谢 youtube API 团队最近对“uploads.gdata.youtube.com”的 CORS 支持)

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

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

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

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

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

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

4

2 回答 2

0

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

对于 YouTube 数据 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 浏览器客户端流程)并带有进度指示器。它还展示了如何在上传后轮询视频处理状态,并在处理后将生成的视频嵌入页面。

于 2013-09-20T00:05:07.880 回答
0

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

于 2013-10-10T15:19:54.170 回答