Встроенный твит от Twitter

Мы не включаем встраивание в предварительном просмотре редактора, что является ожидаемым поведением.

:information_source: Краткое описание Включение поддержки нативных встраиваний Twitter в Discourse
:hammer_and_wrench: Репозиторий GitHub - Lhcfl/discourse-twitter-native-embed · GitHub
:question: Руководство по установке Как установить тему или компонент темы
:open_book: Новичок в темах Discourse? Руководство для начинающих по использованию тем Discourse

Установить этот компонент темы

Недавнее ограничение API Twitter помешало отображению некоторых onebox-элементов на форумах Discourse. Этот компонент темы позволяет Discourse поддерживать нативные встраивания Twitter без использования API Twitter.

Компонент темы запрашивает JavaScript-файл Twitter с платформы platform.twitter.com, поэтому, если Twitter захочет, он может отслеживать вас через этот JavaScript, что может привести к проблемам с конфиденциальностью. Вам необходимо решить, доверяете ли вы этой социальной платформе, которая становится всё более и более абсурдной.

Для использования этого компонента необходимо добавить ссылку на Twitter в диапазон разрешений политики безопасности контента в настройках сайта и добавить twitter.com и x.com в список заблокированных доменов onebox.

https://platform.twitter.com/

37 лайков

Приходится ли после этого пересобирать проект? Я установил и добавил это в политику безопасности контента, но вставки по-прежнему не появляются, отображается только ссылка.

1 лайк

Конечно, нет. Пожалуйста, пришлите мне ссылку на ваш сайт, и я посмотрю, почему это так: этот компонент отлично работает на моём форуме.

5 лайков

Спасибо, я разобрался. После удаления ключа потребителя и секрета Twitter из настроек всё работает как задумано. Похоже, по умолчанию система пыталась встраивать контент через API, потому что я не удалил эти данные. Ещё раз спасибо за вашу работу. Было бы здорово, если бы что-то подобное стало возможным и для Instagram.

6 лайков

Отличная работа. Спасибо за этот компонент темы. Своевременный и качественный результат. :slightly_smiling_face:

4 лайка

Спасибо большое за это!

У меня всё работает, как и обещано, но, возможно, не совсем очевидно, что в предпросмотре отображается просто URL твита в виде гиперссылки, а встраивание происходит только после отправки ответа или публикации.

2 лайка

У нас происходит всё в обратном порядке… в превью отображается встраивание, а после публикации оно не показывается.

1 лайк

Отличная работа и хорошая идея.

Я работал над небольшим форком, чтобы использовать режим тёмной темы data-theme для встраивания. Это работает отлично, но я не эксперт в программировании.

Если вам удастся добавить опцию для выбора темы по умолчанию или тёмной темы, это будет ещё лучше!

9 лайков

Мы внесли все рекомендованные выше изменения. Теперь проблема возникает только при попытке опубликовать пост с мобильного устройства: встраивание твита с ноутбука или настольного компьютера работает нормально.

2 лайка

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

Лично мне нравится более естественный стиль встраивания Twitter по сравнению с Onebox. Если встраиваемые элементы популярных платформ сохранят свой нативный вид, это отлично выделит их в потоке обсуждения. Поистине отличная работа, и невольно думаешь: почему у нас не было этого раньше, чтобы избежать всех сложностей с настройкой аккаунта разработчика? Но такова жизнь — когда возникает необходимость, находятся смелые и достойные, готовые принять вызов.

¡¡Огромное спасибо!!

1 лайк

Кстати, касаясь хрупкости встроенного контента после обсуждения темы о крахе Twitter, я снова подумал об одной старой идее. Если бы встроенные элементы могли генерировать резервное растровое изображение превью в рамках функции встраивания, это защитило бы от сценариев вроде Photobucket и подобных.

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

Архивирование части контента сайтами полезно по мере старения интернета — вещи периодически исчезают.

Хочу предложить ещё одну функцию в том же духе здесь.

1 лайк

Спасибо.

1 лайк

Это важно и только что обнаружено: сложив два и два, если у вас ранее не был включен CSP и вы используете, например, Google AdSense, включение CSP с использованием шифрования (DM) для работы компонента Twitter может уничтожить ваши объявления, так как существует потенциальный конфликт!

Я бы хотел, чтобы меня опровергли с помощью супер-решения или утверждения «вы сделали это неправильно».

2 лайка

Поскольку теперь oneboxing через API требует платной подписки на Twitter, этот метод можно и нужно добавить в ядро Discourse? Крупные корпоративные сообщества могут позволить себе платежи Илону, но для некоммерческих организаций и небольших сообществ это недоступно.

Поддерживает ли эту идею @team?

Упадок Twitter — сложная проблема. Он по-прежнему является основным источником новостей и информации о событиях для большинства СМИ, корпораций и публичных лиц. Несмотря на вымогательство Илона, у платформы нет надёжной альтернативы или конкурента.

2 лайка

К сожалению, этот компонент не работает на моем экземпляре Discourse. Мы удалили ключи входа через Twitter, но всё равно ничего не происходит. Также включили CSP.

2 лайка

Привет, ljpp,

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

Когда вы вставляете ссылку на Twitter в редактор, что возвращает вкладка Network в инструментах разработчика вашего браузера?
Есть ли ошибки в консоли JavaScript?

3 лайка

Мы обдумываем это, но здесь есть две очень серьезные проблемы, которые необходимо решить:

  1. IFRAME означает, что мы позволяем Twitter отслеживать пользователей. Существуют опасения по поводу конфиденциальности.
  2. IFRAME означает, что нам приходится вести борьбу с «неизвестной» высотой. Если у нас нет высоты и мы получаем её только после общения с Twitter, страница начинает «прыгать», что может сильно повлиять на опыт использования Discourse. Заранее определить высоту крайне сложно.
6 лайков

Абсолютно верно. Этот обходной путь с компонентом темы загружает JavaScript с серверов Twitter, и учитывая текущее положение дел у Twitter, это представляет собой огромный риск для конфиденциальности. Поэтому я неохотно применяю этот компонент темы, по крайней мере, пока.

Действительно сложный случай.

5 лайков

Я действительно не уверен, на что смотреть, но вот результаты после вставки ссылки в редактор:


А в предварительном просмотре я получаю это сообщение:


Это твит:

2 лайка

Обновление:

Теперь вставки работают, но в предварительном просмотре композитора по-прежнему отображается сообщение «Извините, нам не удалось сгенерировать…». После публикации всё выглядит отлично.

2 лайка