2011-08-29 68 views
0

我正在研究现有的Flash项目(基于Flash的游戏),我需要集成社交登录小工具Gigya。我使用Adobe Flash Platform Services Social进行了研究并最终完成。Flash错误 - 安全沙盒违例 - 在Flash中集成Gigya

问题是,我成功地将它集成到我最初准备的测试Flash文件中。但是,当我在我的实际Flash项目的源文件中集成它,我得到以下错误:

*** Security Sandbox Violation *** 

SecurityDomain 'http://cdn.gigya.com/wildfire/WFApi.ashx?f=gs&asver=as3&service=socialize&enabledProviders=facebook%2Ctwitter%2Cyahoo%2Cmessenger%2Cgoogle%2Clinkedin%2Cmyspace%2Caol%2Corkut%2Cwordpress&services=socialize&APIKey=[---myApiKey---]' tried to access incompatible context 'file:///D|/FlashProjects/game.swf' 

SecurityError: Error #2070: Security sandbox violation: caller http://cdn.gigya.com/wildfire/WFApi.ashx?f=gs&asver=as3&service=socialize&enabledProviders=facebook%2Ctwitter%2Cyahoo%2Cmessenger%2Cgoogle%2Clinkedin%2Cmyspace%2Caol%2Corkut%2Cwordpress&services=socialize&APIKey=[---myApiKey---] cannot access Stage owned by file:///D|/FlashProjects/game.swf. 

at flash.display::Stage/requireOwnerPermissions() 
at flash.display::Stage/addEventListener() 
at com.Gigya.Lib::FixFocusManagerBugs/addFocusInAndOutHandlers() 
at com.Gigya.Lib::FixFocusManagerBugs/onUiTopElementAddedToStage() 
at flash.display::DisplayObjectContainer/addChild() 
at com.Gigya.Apps.Socialize.Common::BaseForm() 
at com.Gigya.Apps.Socialize.Login.Forms::MiniLogin() 
at com.Gigya.Apps.Socialize.Login::LoginApp/showLoginUI() 
at com.Gigya.Lib::ExternalClassLoader/onSwfLoaded() 
at com.Gigya.Lib::ExternalClassLoader/ecl_INIT() 

请注意,我也包括 的Security.allowDomain(“cdn.gigya.com”);我的代码中有 ,但它在我的初始测试Flash(最小文件有2个框架,没有额外的组件)中工作,但似乎不适用于我的实际游戏Flash。

有没有人遇到过这样的错误?

请帮我一把。

谢谢。

回答

0

我将每个框架和相关的actionscript代码一个接一个地整合到我的flash文件中,看到包括一个框架导致这个问题,我删除它,运行flash文件,一切都很完美。

还不确定问题是如何发生的,但现在不再发生了:)

0

我假设你正在加载SWF,并且SWF需要访问加载器(游戏)阶段?在这种情况下,尝试指定,他们是在同一个应用程序和安全域时,您加载它:

var loader : Loader; 
var context : LoaderContext; 

context = new LoaderContext(true, ApplicationDomain.currentDomain, 
            SecurityDomain.currentDomain);  

loader = new Loader(); 
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, handleLoaderComplete); 
loader.load(new URLRequest(url), context); 

这应该在SWF加载到相同的应用程序域调用者,这应该让他们既能访问彼此。