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