我正在开发一个现有的Flash项目(基于Flash的游戏),我需要整合社交登录窗口小部件Gigya。我使用Adobe Flash Platform Services Social进行了研究和最终确定。
问题是,我成功地将其集成到我最初准备的测试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 :(得分: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加载到与调用者相同的应用程序域中,这应该允许他们互相访问。
答案 1 :(得分:0)
我将每个框架和相关的动作脚本代码逐一集成到我的flash文件中,看到包含一帧在途中导致了这个问题,我删除了它,运行了flash文件,一切运行完美。
仍然不确定问题是如何发生的,但现在不再发生了:)