Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Error #2048: Security sandbox violation (http://www.flasher.ru/forum/showthread.php?t=210473)

projectx 20.03.2015 00:56

Error #2048: Security sandbox violation
 
Пытаюсь авторизироваться загруженным приложением на сервер vk.com, выдает ошибку

Цитата:

Error #2048: Security sandbox violation cannot load data from oauth.vk.com
Про кроссдоменные запросы вкурсе, что локально, что удаленно с серверов вк выдается данная ошибка.

В корне localhost crossdomain.xml

Код:

<?xml version="1.0"?>
<cross-domain-policy>
        <allow-access-from domain="*" secure="false" />
</cross-domain-policy>

Пробовал еще много вариантов, что нашел в гугле, в итоге оставил этот грубый метод.

Сам код получения сессии

Код AS3:

var loader:URLLoader = new URLLoader();
var request:URLRequest = new URLRequest("https://oauth.vk.com/access_token?client_id=здесь_данные_авторизации");
loader.load(request);
loader.addEventListener(Event.COMPLETE, onComplete);
loader.addEventListener(IOErrorEvent.IO_ERROR,ioErrHandler);
loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR,secErrorHandler);
loader.addEventListener(HTTPStatusEvent.HTTP_STATUS,statusHttpHandler);
 
function statusHttpHandler(event:HTTPStatusEvent):void {
    tf.htmlText = "<p>" + event.status + "</p>";
}
 
function ioErrHandler(event:IOErrorEvent):void {
    tf.htmlText = "<p>Error load json</p>";
 }
 
function secErrorHandler(event:SecurityErrorEvent):void {
    tf.htmlText = "<p>" + event.text + "</p>";
 }
 
function onComplete(event:Event):void {
    var loader:URLLoader = URLLoader(event.target)
    tf.htmlText = "<p>" + loader.data + "</p>";
}

Пляски с бубном и добавление/комментирование политик безопасности ни к чему не привели

Код AS3:

Security.allowDomain("*");
Security.allowInsecureDomain("*");
Security.loadPolicyFile("http://vk.com/crossdomain.xml");

Кстати, специально установил пару приложений, чтобы подсмотреть через http://showmycode.com как у них реализовано, может я что-то не учел ни к чему не привели. Мало того, мой дебаг флеш плеер часто выплевывал подобные ошибки на уже прошедших модераторскую проверку и успешно опубликованных приложениях.

Подскажите пожалуйста, в какую сторону курить *facepalm*

Заранее благодарю.

С ув. Дмитрий

Добавлено через 4 минуты
Почему-то не дает отредактировать сообщение.

Добавлю, что флеш плеер обновил до самой последней версии, так как в результате длительного поиска натолкнулся на официальном адобовском сайте информацию об этом.

Добавлено через 5 минут
Еще добавлю, вот такая ошибку часто ловлю почти в любом приложении

Цитата:

Error #2044: Unhandled StatusEvent:. level=error, code=
Может поможет как-то

caseyryan 20.03.2015 07:53

А почему у вас в файле политик указано secure = "false", при том что авторизация вк происходит по протоколу https (hypertext transfer protocol secure)?
Код AS3:

https://oauth.vk.com/access_token?client_id=здесь_данные_авторизации

Скорее всего проблема в этом и есть. Плюс в тестовый файл политик неплохо бы добавить еще to-ports="*"

projectx 20.03.2015 08:13

Да, у меня именно так с самого начало и было. Ввели в заблуждение некоторые ответы на stackoverflow

Код:

<?xml version="1.0"?>
<cross-domain-policy>
        <allow-access-from domain="*" to-ports="*" />
</cross-domain-policy>

К сожалению не помогло. Загружал флешку, повторюсь, прямо на сам ВК и такая же проблема(

Добавлено через 35 минут
Выяснил, что для flash приложений oauth авторизация не требуется и запрос к API спокойно без ошибок начал работать. Только выдает json ответ

Код:

{"error":{"error_code":5,"error_msg":"User authorization failed: invalid access_token (4).","request_params":[{"key":"oauth","value":"1"},{"key":"method","value":"users.get"},{"key":"user_id","value":"4835..."},{"key":"v","value":"5.29"},{"key":"access_token","value":"e65811a40bd6d...............................805e0"}]}}
Передавал полученный sid

Код AS1/AS2:

var request:URLRequest = new URLRequest("https://api.vk.com/method/users.get?user_id=" + flashVars["api_id"] + "&v=5.29&access_token=" + flashVars["sid"]);


caseyryan 20.03.2015 08:56

Если это простая флешка, то лучше воспользуйтесь готовой контактовской библиотекой
С ней все работает без лишних заморочек
https://vk.com/dev/Flash_SDK

Цитата:

К сожалению не помогло. Загружал флешку, повторюсь, прямо на сам ВК и такая же проблема(
Скорее всего файл просто закэшировался браузером. Почистите кэш после замены

projectx 20.03.2015 09:55

Спасибо Вам Кейси Райан, разобрался буквально за минут 15 и все работает идеально!

dimarik 20.03.2015 10:10

Код:

The URL policy file is located, by default, in the root directory of the target server, with the name
crossdomain.xml (for example, at www.example.com/crossdomain.xml). Flash application developers can
specify another location by calling the ActionScript loadPolicyFile() method. The URL policy file located
in the root directory is referred to as the master policy file.

Как ясно следует из этой цитаты, crossdomain.xml должен отдавать target server. Вы можете сами скачать https://oauth.vk.com/crossdomain.xml? У меня не получилось, потому что его там нет. Может быть вы знаете путь, отличный от дефолтного, по которому он лежит в https://oauth.vk.com? Если да, то можно явно загрузить с помощью loadPolicyFile() и дальше разбираться с его содержимым. Если же файла политики безопасности в принципе не существует в этом домене, то вы не сможете взаимодействовать с этим сервером через http/https.


Часовой пояс GMT +4, время: 18:09.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.