Youtube AS3 API跨域

时间:2012-11-20 12:23:14

标签: actionscript-3 cross-domain youtube-api

我正在尝试使用Youtube AS3 API将一些Youtube视频显示到我的Flash电影中,但当我将其上传到我自己的服务器时,浏览器会显示此消息:

  

错误#2044 :SecurityErrorEvent:text =错误#2121:沙箱安全   违规行为:http:// * /magicbook.swf?user=25&id=2283:   http://www.youtube.com/apiplayer?version=3无法访问。

我已经添加了Security.allowDomain个政策,以便允许两个服务器之间的访问。我做错了什么?

这是我的代码:

class YoutubePlayer extends Sprite {

    private var player:Object;
    private var loader:Loader;
    private var _videoID:String;

    public function YoutubePlayer(videoID:String) {

        Security.allowInsecureDomain("*");
        Security.allowDomain("*");          

        //loader = addChild(new Loader()) as Loader;
        loader = new Loader();
        loader.contentLoaderInfo.addEventListener(Event.INIT, onLoaderInit, false, 0, true);
        loader.load(new URLRequest("http://www.youtube.com/apiplayer?version=3"));
        _videoID = videoID;
    }

    private function onLoaderInit(event:Event):void {
        player = loader.content;
        player.addEventListener("onReady", onPlayerReady);
    }
    private function onPlayerReady(event:Event):void {
        player.setSize(320, 180);
        player.cueVideoByUrl("http://www.youtube.com/v/"+_videoID,0);
        player.addEventListener("onError",seeError);
        this.addChild(loader);
    }

    private function seeError(event:Event):void{
        trace("error");
    }

    public function playYoutube():void{
        player.playVideo();
    }

    public function stopYoutube():void{
        player.stopVideo();
    }
}

1 个答案:

答案 0 :(得分:0)

我假设顶部有一个“import flash.system.Security”。

我自己非常相似的代码工作正常,唯一的主要区别是:

  • 我将加载程序添加到INIT事件处理程序中的阶段(而不是在加载之前)
  • 出于某种原因,我有Security.allowDomain(“*”)和Security.allowDomain(“www.youtube.com”) - 我不确定为什么(这可能是一个错误,但无法正确测试现在)

希望这些差异有所帮助..我不是真正的flash / actionscript专家。