Ошибка файла политики при загрузке изображений с facebook - PullRequest
3 голосов
/ 21 января 2010

Я делаю игровую таблицу лидеров на фейсбуке. Я не использую Connect, но работаю внутри холста. Когда я пытаюсь загрузить изображения с Facebook, я получаю следующую ошибку.

SecurityError: Error #2122: Security sandbox violation: Loader.content: http://test cannot access http://profile.ak.fbcdn.net/v22941/254/15/q652310588_2173.jpg A policy file is required, but the checkPolicyFile flag was not set when this media was loaded.

Вот код моего загрузчика

    public var preLoader:Loader;
    preLoader=new Loader();
        **update**
        Security.loadPolicyFile('http://api.facebook.com/crossdomain.xml');
        Security.allowDomain('http://profile.ak.fbcdn.net');
        Security.allowInsecureDomain('http://profile.ak.fbcdn.net');
                    **update-end**


        public function imageContainer(Imagewidth:Number,Imageheight:Number,url:String,path:String) {
        preLoader=new Loader();

        Security.loadPolicyFile("http://api.facebook.com/crossdomain.xml");
        var context:LoaderContext = new LoaderContext();
        context.checkPolicyFile = true;
        context.applicationDomain = ApplicationDomain.currentDomain;

        preLoader.load(new URLRequest(path),context);

Есть идеи? Я импортирую правильный класс, хотя.

UPDATE: Я загружаю изображения из другого домена, скажем, вызываю func http://fahim.com изображения из http://profile.ak.fbcdn.net/v22941/254/15/q652310588_2173.jpg что-то (я убедился, что изображения статичны, не требуют входа в систему на Facebook или чего-то еще, они просто Публичный профиль пользователя)

Ответы [ 4 ]

9 голосов
/ 19 октября 2011

Это URL к файлу политики изображения:

Security.loadPolicyFile('https://fbcdn-profile-a.akamaihd.net/crossdomain.xml');

С этой строкой все должно работать просто отлично.

3 голосов
/ 03 июня 2010
var loaderContext:LoaderContext;
loaderContext= new LoaderContext();
loaderContext.securityDomain=SecurityDomain.currentDomain;
loaderContext.checkPolicyFile = true;

.. затем передайте loaderContext при вызове load ()

1 голос
/ 21 октября 2013

Если вы просто хотите отобразить какое-либо изображение, без получения его данных хороший обходной путь не пытается использовать эти данные. В этом случае вам не нужно разрешать безопасность и файлы междоменных файлов. Используйте только простой код загрузки:

backgroundLoader.unload();
backgroundLoader.contentLoaderInfo.addEventListener(Event.INIT,backgroundImageLoaded, false, 0, true);

var lc : LoaderContext = new LoaderContext();
lc.checkPolicyFile = false;
backgroundLoader.load(new URLRequest(imagePath_),lc);

где backgroundLoader - переменная класса типа Loader. Затем, когда дело доходит до использования изображения для добавления его на холст, не запрашивайте данные (не используйте e.currentTarget.content), только отображайте изображение:

function backgroundImageLoaded(e:Event) : void {
   myMovieClip.addChild(backgroundLoader);
}

(Решение от http://www.onegiantmedia.com/as3--load-a-remote-image-from-any-url--domain-with-no-stupid-security-sandbox-errors)

1 голос
/ 22 января 2010

все заработало, файл политики facebook для изображений где-то еще, и я перевел все остальное на "*"

Спасибо за помощь всем.

Security.loadPolicyFile ( 'https://fbcdn -profile-a.akamaihd.net / crossdomain.xml ');

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...