0

我正在开发一个现有的 Flash 项目(基于 Flash 的游戏),我需要在其中集成社交登录小部件 Gigya。我使用 Adob​​e 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。

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

请帮帮我。

谢谢。

4

2 回答 2

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 加载到与调用者相同的应用程序域中,这应该允许它们相互访问。

于 2011-08-29T07:31:26.780 回答
0

我将每一帧和相关的动作脚本代码一一集成到我的 flash 文件中,看到在途中包含一帧导致了这个问题,我将其删除,运行 flash 文件,一切正常。

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

于 2011-09-29T14:06:45.690 回答