YouTUBE API的Flash不工作



我们有一个浏览器flash应用程序加载YouTube嵌入式AS3播放器播放一些YouTube视频(https://developers.google.com/youtube/flash_api_reference)

是的,我知道Flash API被弃用了,Flash正在消亡等等,但它目前是我们复杂的3D图形创作工具的唯一实用平台,就像播放YouTube视频的一个功能一样;如果强迫我们的客户在Vimeo上托管他们的视频来解决这个问题,那将是疯狂的。

到目前为止一切都工作得很好(代码或服务器没有变化),直到2周前,我们无法从应用程序播放YouTube视频。

我发现到目前为止我们使用的url格式给出了一个文件未找到错误:

http://www.youtube.com/v/<my video code>?version=3&autoplay=1

经过一番调查,谷歌似乎更新了他们的API服务条款。

所以按照他们页面上的一些说明,我把http改为https:

https://www.youtube.com/v/<my video code>?version=3&autoplay=1

当我的应用程序试图使用该url加载YouTube播放器时,Event.COMPLETE事件被触发,播放器数据似乎被加载得很好,但在这部分中,YouTube播放器被分配给var:

private function onLoaderComplete(e:Event):void {
    var player = e.currentTarget.content;
    ....
}

抛出以下错误:

*** Security Sandbox Violation ***
SecurityDomain http://<my app url> tried to access incompatible context 'https://www.youtube.com/v/<my video code>?version=3&autoplay=1'
SecurityError: Error #2121: Security sandbox violation: LoaderInfo.content: http://<my app url> cannot access https://www.youtube.com/v/<my video code>?version=3&autoplay=1. This may be worked around by calling Security.allowDomain.

我已经设置了所有我能想到的Security.allowDomainSecurity.allowInsecureDomain (*.youtube.com, *.ytimg.com, https ://www.youtube.com, https://s.ytimg.com等,以及我能想到的http和https的任何变体)。所以我认为这不是问题所在。

我在这个线程中尝试了解决方案,它建议使用这行来解决错误#2121:

loaderContext.securityDomain = SecurityDomain.currentDomain;

现在它甚至没有触发Event.COMPLETE事件。只有一个SecurityErrorEvent.SECURITY_ERROR事件,所以没有内容加载:

*** Security Sandbox Violation ***
Connection to https://www.youtube.com/v/<my video code>?version=3&autoplay=1 halted - not permitted from http://<my app url>
httpStatus (error): [HTTPStatusEvent type="httpStatus" bubbles=false cancelable=false eventPhase=2 status=0 redirected=true responseURL=null]
SecurityError: 
[SecurityErrorEvent type="securityError" bubbles=false cancelable=false eventPhase=2 text="Error #2048: Security sandbox violation: http://<my app url> cannot load data from https://www.youtube.com/v/<my video code>?version=3&autoplay=1."]

所以我认为这是一种倒退。

我认为这可能是一个HTTP到HTTPS的问题,但另一方面,直接加载YouTube Chromeless AS3播放器API(没有播放/停止和时间线控制),工作正常:

https://www.youtube.com/apiplayer?version=3&video_id=<my video code>

您得到了错误安全沙箱违规,因为您试图从计算机上的本地文件访问Adobe安全不喜欢的web/服务器文件。查看此链接

还发现了这个线程,它指出当沙箱配置为以一种方式使用时,可能会发生这种情况,但错误地以另一种方式使用

查看这些相关链接:

  • Youtube API安全沙箱违规
  • 安全沙箱违规Flash AS3

我遇到了同样的问题。Youtube现在有了crossdomain.xml的限制版本(https://www.youtube.com/crossdomain.xml):

)
<allow-access-from domain="*.youtube.com" />
<allow-access-from domain="s.ytimg.com" />

而应该是

<allow-access-from domain="*" />

相关内容

  • 没有找到相关文章

最新更新