YouTUBE API для Flash не работает

У нас есть приложение для браузера Flash, которое загружает встроенный проигрыватель AS3 YouTube для воспроизведения некоторых видеороликов YouTube (https://developers.google.com/youtube/flash_api_reference)

Да, я знаю, что Flash API устарел, Flash умирает и т. Д., Но в настоящее время это единственная практическая платформа для нашего сложного инструмента разработки трехмерной графики, который, как одна функция, воспроизводит видео с YouTube; и было бы безумием заставлять наших клиентов размещать свои видео на Vimeo, чтобы решить эту проблему.

Пока все работает нормально (без изменений в коде или сервере), до 2 недель назад, когда мы не могли воспроизводить видео YouTube из приложения.

Я обнаружил, что формат URL, который мы использовали до сих пор, давал ошибку «файл не найден»:

http://www.youtube.com/v/<my video code>?version=3&autoplay=1

После небольшого исследования выяснилось, что Google обновил свои условия использования своих служб API сервис.

Итак, следуя некоторым указаниям на их странице, я изменил http на https:

https://www.youtube.com/v/<my video code>?version=3&autoplay=1

Когда мое приложение пытается загрузить проигрыватель YouTube с использованием этого URL-адреса, запускается событие Event.COMPLETE, и данные проигрывателя, кажется, загружаются нормально, но в этой части, где проигрыватель YouTube назначается переменной:

private function onLoaderComplete(e:Event):void {
    var player = e.currentTarget.content;
    ....
}

Выдает следующую ошибку:

*** Security Sandbox Violation ***
SecurityDomain http://<my app url> tried to access incompatible context 'https://www.youtube.com/v/<my video code>?version=3&autoplay=1'
SecurityError: Error #2121: Security sandbox violation: LoaderInfo.content: http://<my app url> cannot access https://www.youtube.com/v/<my video code>?version=3&autoplay=1. This may be worked around by calling Security.allowDomain.

Я установил все Security.allowDomain и Security.allowInsecureDomain, о которых я могу думать (*.youtube.com, *.ytimg.com, https ://www.youtube.com, https://s.ytimg.com и т. Д. И любые варианты http и https, о которых я могу думать). Так что я не думаю, что это проблема.

Я попробовал решение в этом потоке < / a>, где рекомендуется использовать эту строку для решения ошибки № 2121:

loaderContext.securityDomain = SecurityDomain.currentDomain;

Теперь он даже не запускает событие Event.COMPLETE. Только событие SecurityErrorEvent.SECURITY_ERROR, поэтому контент не загружается:

*** Security Sandbox Violation ***
Connection to https://www.youtube.com/v/<my video code>?version=3&autoplay=1 halted - not permitted from http://<my app url>
httpStatus (error): [HTTPStatusEvent type="httpStatus" bubbles=false cancelable=false eventPhase=2 status=0 redirected=true responseURL=null]
SecurityError: 
[SecurityErrorEvent type="securityError" bubbles=false cancelable=false eventPhase=2 text="Error #2048: Security sandbox violation: http://<my app url> cannot load data from https://www.youtube.com/v/<my video code>?version=3&autoplay=1."]

Так что я считаю, что это шаг назад.

Я думал, что это может быть проблема с HTTP на HTTPS, но, с другой стороны, загрузка API-интерфейса YouTube Chromeless AS3 напрямую (без элементов управления воспроизведением / остановкой и временной шкалой) работает нормально:

https://www.youtube.com/apiplayer?version=3&video_id=<my video code>

Мы будем благодарны за любую полезную подсказку.


person Eketol    schedule 19.08.2016    source источник
comment
В каком браузере (-ах) вы тестируете? Я знаю, что несколько месяцев назад Firefox начал ожидать, что все приложения Flash, загружающие внешние данные, будут запускаться с сервера HTTPS. Возможно, этому примеру последовали и другие браузеры. Самым простым и перспективным решением является обновление вашего сервера до HTTPS. На панели управления вашего хоста или сайта уже может быть разрешена простая настройка HTTPS. Посоветуйтесь с ними.   -  person VC.One    schedule 20.08.2016
comment
PS: Не знаю, почему проходит версия без хрома (не надейтесь на это). Однако, поскольку это работает, не могли бы вы просто потратить день или два на создание собственных настраиваемых элементов управления воспроизведением / паузой / поиском?   -  person VC.One    schedule 20.08.2016
comment
Вы нашли решение этого? У меня такая же проблема с моим флеш-приложением.   -  person John Odom    schedule 24.02.2017


Ответы (2)


Вы получили ошибку Нарушение безопасной тестовой среды, потому что вы пытаетесь получить доступ к файлу веб-сервера или сервера из локального файла на вашем компьютере, что не нравится системе безопасности Adobe. Просмотрите эту ссылку

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

Проверьте эти ссылки по теме:

person abielita    schedule 20.08.2016
comment
Пожалуйста, дважды проверьте свой ответ. Процитируем первую строку вопроса: У нас есть браузер Flash-приложение .... - person VC.One; 20.08.2016

Я столкнулся с той же проблемой. Похоже, что у Youtube теперь есть более ограниченная версия crossdomain.xml (https://www.youtube.com/crossdomain.xml):

<allow-access-from domain="*.youtube.com" />
<allow-access-from domain="s.ytimg.com" />

тогда как это должно быть

<allow-access-from domain="*" />
person GGS    schedule 09.11.2016