YouTUBE API for Flash无法正常工作

时间:2016-08-19 21:22:58

标签: actionscript-3 flash youtube youtube-api youtube-data-api

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

是的我知道Flash API已被弃用,Flash正在消亡等等,但它是目前我们复杂的3D图形创作工具的唯一实用平台,就像一个功能播放YouTube视频一样;迫使我们的客户在Vimeo上主持他们的视频以解决这个问题会很疯狂。

到目前为止,一切都运行正常(代码或服务器没有变化),直到2周前,我们无法从应用中播放YouTube视频。

我发现到目前为止我们使用的网址格式是找不到文件错误:

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

经过调查后,Google似乎更新了他们的API服务terms of service

因此,按照其页面中的某些说明,我将http更改为https:

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

当我的应用尝试使用该网址加载YouTube播放器时,Event.COMPLETE事件会被触发并且播放器数据似乎已正常加载,但在此部分中,YouTube播放器被分配到var:< / p>

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.comhttps ://www.youtube.comhttps://s.ytimg.com等。和我能想到的http和https的任何变化)。所以我认为这不是问题所在。

我在这个thread中尝试了解决方案,它建议使用此行来解决错误#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>

任何有用的提示都将受到赞赏。

2 个答案:

答案 0 :(得分:0)

您收到错误安全沙箱违规,因为您尝试从计算机上的本地文件访问Web /服务器文件,而Adobe安全管理员并不喜欢该文件。看看这个link

还发现了这个thread,它指出当沙箱配置为单向使用但是以错误的方式使用时会发生这种情况。

检查以下相关链接:

答案 1 :(得分:0)

我遇到了同样的问题。看来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="*" />