Встраивание YouTube перестало работать на серверах в Европе

Когда вы пытаетесь создать превью для ссылки на YouTube, YouTube автоматически перенаправляет на страницу с именем consent.youtube.com. На этой странице отсутствуют теги oEmbed/OpenGraph, поэтому создание превью, к сожалению, не работает.

Это, безусловно, не ошибка Discourse, а связано с (как кажется) изменением на стороне YouTube, которое нарушает работу. Я подозреваю, что это происходит из-за нового европейского регулирования, так как на meta я не могу воспроизвести эту проблему.

Наш сервер находится в Европе (Германия), и вы можете увидеть URL перенаправления здесь.

12 лайков

Частично исправлено с помощью плагина Onebox Assistant, но не полностью (он отображает встраивание, но больше не возвращает заголовок).

Думаю, для YouTube должно быть какое-то конкретное решение через API-ключ или что-то подобное…

1 лайк

Я заходил сюда вчера вечером, чтобы сообщить об этой же проблеме, так как она тоже у нас в последнее время происходит, но когда я вставил свой пример ссылки YouTube, здесь на Meta всё сработало отлично :roll_eyes:

Мой Discourse — версия v2.7.0.beta5 (61860098d9)

5 лайков

Скорее всего, потому что сервер meta находится не в Европе :sweat_smile:

2 лайка

Великобритания сейчас тоже нет :rofl:

1 лайк

Проблема связана с «Формой согласия на обработку данных»: OneBox перехватывает именно её, а не фактический контент.

Если вместо https://youtube.com/watch?v=XYZ использовать https://youtu.be/XYZ, всё заработает, так как это «ссылка для обмена», которая не вызывает диалог согласия. (Однако это не идеальное решение).

Возможно, в качестве быстрого исправления стоит добавить функцию автоматического преобразования URL в «короткую версию» при создании превью в OneBox? Не уверен, просто предоставляю дополнительную информацию и обратную связь.

10 лайков

Поскольку наше сообщество активно использует медиа, его участники поделились тысячами и тысячами видеороликов на YouTube, при этом ежемесячно публикуется несколько сотен новых видео.

Это изменение со стороны YouTube уже становится серьёзной проблемой, но я не думаю, что её можно решить силами Discourse, если сам YouTube принуждает к перенаправлению на свою страницу согласия?

5 лайков

Присоединяюсь к этому сообщению, так как это тоже станет большой проблемой для нашего сообщества.

5 лайков

Обновление: Заголовок снова работает (как и встроенный контент) с Onebox Assistant.

1 лайк

Итак, если бы Discourse переписывал URL так, как вы описываете, во время обработки поста, это бы исправило проблему?

Если это так, то плагин мог бы это исправить (возможно, даже компонент темы?), и я предполагаю, что они с радостью примут pull-запрос и/или исправят это довольно быстро.

Технически — да. Я провёл много тестов, и это стабильно работает: с коротким URL всё в порядке, а с «официальным» — нет.

3 лайка

Я бы не стал считать это стабильным обходным решением; велика вероятность, что Google в ближайшем будущем применит ту же политику и к ним.

2 лайка

Да, это не так.

Просто это кажется очень «смешным», потому что работают оба варианта: https://youtu.be/VIDEO и удаление «www» из обычного URL, то есть https://youtube.com/watch?v=VIDEO. Таким образом, критерии «блокировки» с всплывающим окном согласия не выглядят очень «логичными» с точки зрения пользователя.

3 лайка

Я не спорю, но тогда остаётся только одно решение — не использовать YouTube. :man_shrugging:

1 лайк

Вам также нужно будет перехватить предварительный просмотр редактора, чтобы не показывать пользователю это катастрофическое сообщение об ошибке:

1 лайк

Ой, нам определённо стоит это проверить! Спасибо за сообщение.

13 лайков

Добавлю ещё: та же проблема возникает и для ссылок на аккаунты /user/:

6 лайков

Не могли бы вы ещё раз проверить эти URL? Вот что я сейчас вижу с сервера во Франкфурте (вывод wget отредактирован, чтобы показать только перенаправления):

wget 'https://youtu.be/KCyIfcevExE'

--2021-04-06 19:03:39--  https://youtu.be/KCyIfcevExE
Location: https://www.youtube.com/watch?v=KCyIfcevExE&feature=youtu.be [following]

--2021-04-06 19:03:39--  https://www.youtube.com/watch?v=KCyIfcevExE&feature=youtu.be
Location: https://consent.youtube.com/m?continue=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DKCyIfcevExE%26feature%3Dyoutu.be&gl=DE&m=0&pc=yt&uxe=23983172&hl=de&src=1 [following]

или

wget 'https://youtube.com/watch?v=KCyIfcevExE'

--2021-04-06 19:05:45--  https://youtube.com/watch?v=KCyIfcevExE
Location: https://consent.youtube.com/m?continue=https%3A%2F%2Fyoutube.com%2Fwatch%3Fv%3DKCyIfcevExE&gl=DE&m=0&pc=yt&uxe=23983172&hl=de&src=1 [following]

--2021-04-06 19:05:45--  https://consent.youtube.com/m?continue=https%3A%2F%2Fyoutube.com%2Fwatch%3Fv%3DKCyIfcevExE&gl=DE&m=0&pc=yt&uxe=23983172&hl=de&src=1
Location: https://consent.youtube.com/ml?continue=https://youtube.com/watch?v%3DKCyIfcevExE&gl=DE&hl=de&pc=yt&uxe=23983172&src=1 [following]

(то есть оба формата URL теперь также перенаправляют на страницу согласия)

3 лайка

Я только что проверил эту ссылку для вас с моего сервера в Великобритании, и она корректно отобразилась в превью:

А если я изменю её на полную/длинную ссылку, проблема с согласием возникает снова:

4 лайка