Недавнее ограничение API Twitter помешало отображению некоторых onebox-элементов на форумах Discourse. Этот компонент темы позволяет Discourse поддерживать нативные встраивания Twitter без использования API Twitter.
Компонент темы запрашивает JavaScript-файл Twitter с платформы platform.twitter.com, поэтому, если Twitter захочет, он может отслеживать вас через этот JavaScript, что может привести к проблемам с конфиденциальностью. Вам необходимо решить, доверяете ли вы этой социальной платформе, которая становится всё более и более абсурдной.
Для использования этого компонента необходимо добавить ссылку на Twitter в диапазон разрешений политики безопасности контента в настройках сайта и добавить twitter.com и x.com в список заблокированных доменов onebox.
Приходится ли после этого пересобирать проект? Я установил и добавил это в политику безопасности контента, но вставки по-прежнему не появляются, отображается только ссылка.
Спасибо, я разобрался. После удаления ключа потребителя и секрета Twitter из настроек всё работает как задумано. Похоже, по умолчанию система пыталась встраивать контент через API, потому что я не удалил эти данные. Ещё раз спасибо за вашу работу. Было бы здорово, если бы что-то подобное стало возможным и для Instagram.
У меня всё работает, как и обещано, но, возможно, не совсем очевидно, что в предпросмотре отображается просто URL твита в виде гиперссылки, а встраивание происходит только после отправки ответа или публикации.
Я работал над небольшим форком, чтобы использовать режим тёмной темы data-theme для встраивания. Это работает отлично, но я не эксперт в программировании.
Если вам удастся добавить опцию для выбора темы по умолчанию или тёмной темы, это будет ещё лучше!
Мы внесли все рекомендованные выше изменения. Теперь проблема возникает только при попытке опубликовать пост с мобильного устройства: встраивание твита с ноутбука или настольного компьютера работает нормально.
Некоторые пользователи хотят только встраиваемые элементы и не нуждаются в функционале «входа в систему», поэтому этот компонент будет очень популярным. Да, я вижу запросы и на другие платформы.
Лично мне нравится более естественный стиль встраивания Twitter по сравнению с Onebox. Если встраиваемые элементы популярных платформ сохранят свой нативный вид, это отлично выделит их в потоке обсуждения. Поистине отличная работа, и невольно думаешь: почему у нас не было этого раньше, чтобы избежать всех сложностей с настройкой аккаунта разработчика? Но такова жизнь — когда возникает необходимость, находятся смелые и достойные, готовые принять вызов.
Кстати, касаясь хрупкости встроенного контента после обсуждения темы о крахе Twitter, я снова подумал об одной старой идее. Если бы встроенные элементы могли генерировать резервное растровое изображение превью в рамках функции встраивания, это защитило бы от сценариев вроде Photobucket и подобных.
Я не знаю, как это можно реализовать в коде, но полагаю, что в принципе это работало бы так же, как функция, которая захватывает изображение по ссылке на опубликованную картинку и сохраняет его в нативной базе данных. Хотя, думаю, это проще, поскольку файл уже существует на каком-то сервере, это, вероятно, работало бы аналогично функции автоматического скриншота, которая срабатывает в момент добавления встроенного элемента в пост на Discourse.
Архивирование части контента сайтами полезно по мере старения интернета — вещи периодически исчезают.
Хочу предложить ещё одну функцию в том же духе здесь.
Это важно и только что обнаружено: сложив два и два, если у вас ранее не был включен CSP и вы используете, например, Google AdSense, включение CSP с использованием шифрования (DM) для работы компонента Twitter может уничтожить ваши объявления, так как существует потенциальный конфликт!
Я бы хотел, чтобы меня опровергли с помощью супер-решения или утверждения «вы сделали это неправильно».
Поскольку теперь oneboxing через API требует платной подписки на Twitter, этот метод можно и нужно добавить в ядро Discourse? Крупные корпоративные сообщества могут позволить себе платежи Илону, но для некоммерческих организаций и небольших сообществ это недоступно.
Упадок Twitter — сложная проблема. Он по-прежнему является основным источником новостей и информации о событиях для большинства СМИ, корпораций и публичных лиц. Несмотря на вымогательство Илона, у платформы нет надёжной альтернативы или конкурента.
К сожалению, этот компонент не работает на моем экземпляре Discourse. Мы удалили ключи входа через Twitter, но всё равно ничего не происходит. Также включили CSP.
Потеря богатых вложений определённо нежелательна, и мы обсуждаем это, чтобы понять, как правильно решить эту проблему.
Когда вы вставляете ссылку на Twitter в редактор, что возвращает вкладка Network в инструментах разработчика вашего браузера?
Есть ли ошибки в консоли JavaScript?
Мы обдумываем это, но здесь есть две очень серьезные проблемы, которые необходимо решить:
IFRAME означает, что мы позволяем Twitter отслеживать пользователей. Существуют опасения по поводу конфиденциальности.
IFRAME означает, что нам приходится вести борьбу с «неизвестной» высотой. Если у нас нет высоты и мы получаем её только после общения с Twitter, страница начинает «прыгать», что может сильно повлиять на опыт использования Discourse. Заранее определить высоту крайне сложно.
Абсолютно верно. Этот обходной путь с компонентом темы загружает JavaScript с серверов Twitter, и учитывая текущее положение дел у Twitter, это представляет собой огромный риск для конфиденциальности. Поэтому я неохотно применяю этот компонент темы, по крайней мере, пока.
Теперь вставки работают, но в предварительном просмотре композитора по-прежнему отображается сообщение «Извините, нам не удалось сгенерировать…». После публикации всё выглядит отлично.