Ошибка Flash - нарушение безопасности песочницы - при интеграции Gigya во Flash

Я работаю над существующим проектом 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.

Кто-нибудь сталкивался с такой ошибкой?

Пожалуйста, помогите мне.

Благодарю.

2 ответа

Решение

Я интегрировал каждый кадр и соответствующий код ActionScript в мой файл флэш-памяти один за другим, увидел, что включение одного кадра в путь вызвало эту проблему, я удалил его, запустил файл флэш-памяти, и все работало отлично.

До сих пор не уверен, как проблема возникла, но это больше не происходит сейчас:)

Я предполагаю, что вы загружаете 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 в тот же домен приложения, что и вызывающая сторона, что должно позволить им обоим получить доступ друг к другу.

Другие вопросы по тегам