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

Он снова появился, а у меня снова исчез

Извините, но не могли бы вы полностью описать исправление так, будто объясняете ребёнку? :sweat_smile:

  1. Установите компонент темы
  2. Добавьте https://platform.twitter.com/ в настройку content security policy script src
  3. Добавьте twitter.com в список blocked onebox domains
  4. Добавьте любое значение в настройку twitter consumer key
  5. Добавьте любое значение в настройку twitter consumer secret

После этого всё должно работать.

6 лайков

О, понятно, спасибо, Стивен. У кого-нибудь есть идея, как исправить нативные вставки Twitter? Они уже неделю отображаются на моём сайте просто как ссылки. Или этот компонент — единственное решение для вставок Twitter?

Я забыл один шаг: добавил twitter.com в список доменов для блокировки onebox (для остальных) :man_facepalming: Я отредактировал предыдущий пост.

Можете ли вы отправить ссылку на ваш форум в личные сообщения (тему со ссылкой на Twitter)? Я хочу убедиться, что вы активировали компонент темы (некоторые забывают добавить его в свои темы), или проверить исходное сообщение (ссылка на Twitter должна находиться на отдельной строке).

2 лайка

Подтверждаю, что инструкции, предоставленные @Steven, работают на моём экземпляре с последней версией (3.1.0.beta6).

1 лайк

@Solarus, это тоже работало для постов в Twitter с прикрепленными изображениями?

Например: https://twitter.com/droneswmp/status/1686451431006453760

Это тоже сработало для меня. Однако в качестве заключительного шага мне пришлось выполнить мягкую пересборку моего экземпляра, обновив клиентскую часть экземпляра Discourse. Это, казалось, сработало как от proverbial толчок.

Я протестировал с вложенным твитом-видео; я могу проверить этот конкретный твит на своём экземпляре и отчитаться.

@Richie я попробовал с вашим примером твита, и твит с изображением отображается корректно, проблем нет (мой язык — испанский).

Есть ли планы доработать встраивание по ссылке «http://x.com»?

2 лайка

Спасибо за напоминание. Я исправлю это сразу же.

3 лайка

Теперь поддерживается ссылка на x.com.
Стоит отметить, что, похоже, сама Twitter ещё не полностью активировала доменное имя x.com. Неизвестно, какие изменения будут внесены в формат ссылки и используемый для загрузки JavaScript, если стандартная ссылка для обмена в будущем изменится на x.com.

6 лайков

Можно ли отредактировать первый пост, добавив туда правильные инструкции?

Я пытаюсь следить за обсуждением, но один участник предлагает добавить twitter.com в список заблокированных доменов для onebox, другой говорит, что это не нужно. Затем кто-то пишет, что нужно удалить ключи API Twitter, а кто-то — что в это поле нужно добавить что угодно…

Наш перестал работать какое-то время назад, и мы, в общем-то, махнули на него рукой.

Мы подумали, что Илон, вероятно, затевает какую-то пакость, поэтому решили подождать, пока всё уляжется :blush:

Спасибо за подсказку, я только что обновил инструкцию.

3 лайка

На нашем форуме мы заметили, что размещение твита в блоке [quote] обеспечивает корректное отображение расширенного вложения, в противном случае визуализируется только текст. Возможно, это связано с нашей темой, но я всё же решил оставить это здесь на случай, если кто-то другой столкнётся с подобным поведением.

Не могли бы вы проверить элемент ссылки, чтобы убедиться, что у него есть класс onebox?
Если вы хотите, чтобы компонент темы работал, необходимо наличие атрибута класса «onebox».

Пытались ли вы добавить twitter.com и x.com в список «заблокированных доменов onebox»?

<a href="https://x.com/username/status/..." class="onebox">
3 лайка

Я добавил и Twitter, и X в список заблокированных доменов для onebox (сначала забыл про X), но странное поведение сохраняется.

Что касается CSS-класса onebox, я не знаю, где именно его следует искать. Например, для этого твита:

https://twitter.com/SpoutLore/status/1715688928806944943

После отправки я вижу только готовый пост:

<aside class="onebox twitterstatus" data-onebox-src="https://twitter.com/SpoutLore/status/1715688928806944943">
  <header class="source"><svg class="fa d-icon d-icon-fab-twitter svg-icon svg-string" xmlns="http://www.w3.org/2000/svg"><use href="#fab-twitter"></use></svg>

      <a href="https://twitter.com/SpoutLore/status/1715688928806944943" target="_blank" rel="noopener">twitter.com</a>
  </header>

  <article class="onebox-body">
    
<h4><a href="https://twitter.com/SpoutLore/status/1715688928806944943" target="_blank" rel="noopener">Spout Lore <span class="badge badge-notification clicks" title="1 click">1</span></a></h4>
<div class="twitter-screen-name"><a href="https://twitter.com/SpoutLore/status/1715688928806944943" target="_blank" rel="noopener">@SpoutLore</a></div>

<div class="tweet">
  <span class="tweet-description">🚨НОВЫЙ ЭПИЗОД!!🚨

В этом выпуске компания берёт урок у Кристофера Нолана и пытается внедрить себе в мозг, чтобы понять буквально ЛЮБОЙ факт.

Также большая часть этого эпизода происходит за обеденным буфетом Pizza Hut за $7,99.

https://t.co/gDtdYQOYao</span>
</div>

<div class="date">
  <a href="https://twitter.com/SpoutLore/status/1715688928806944943" class="timestamp" target="_blank" rel="noopener"></a>


</div>

  </article>

  <div class="onebox-metadata">
    
    
  </div>

  <div style="clear: both"></div>
</aside>

Или, если он находится в блоке цитаты, вот так:

<div class="twitter-tweet twitter-tweet-rendered" style="display: flex; max-width: 550px; width: 100%; margin-top: 10px; margin-bottom: 10px;"><iframe id="twitter-widget-13" scrolling="no" frameborder="0" allowtransparency="true" allowfullscreen="true" class="" style="position: static; visibility: visible; width: 550px; height: 786px; display: block; flex-grow: 1;" title="Twitter Tweet" src="https://platform.twitter.com/embed/Tweet.html?dnt=false&amp;embedId=twitter-widget-13&amp;features=eyJ0ZndfdGltZWxpbmVfbGlzdCI6eyJidWNrZXQiOltdLCJ2ZXJzaW9uIjpudWxsfSwidGZ3X2ZvbGxvd2VyX2NvdW50X3N1bnNldCI6eyJidWNrZXQiOnRydWUsInZlcnNpb24iOm51bGx9LCJ0ZndfdHdlZXRfZWRpdF9iYWNrZW5kIjp7ImJ1Y2tldCI6Im9uIiwidmVyc2lvbiI6bnVsbH0sInRmd19yZWZzcmNfc2Vzc2lvbiI6eyJidWNrZXQiOiJvbiIsInZlcnNpb24iOm51bGx9LCJ0ZndfZm9zbnJfc29mdF9pbnRlcnZlbnRpb25zX2VuYWJsZWQiOnsiYnVja2V0Ijoib24iLCJ2ZXJzaW9uIjpudWxsfSwidGZ3X21peGVkX21lZGlhXzE1ODk3Ijp7ImJ1Y2tldCI6InRyZWF0bWVudCIsInZlcnNpb24iOm51bGx9LCJ0ZndfZXhwZXJpbWVudHNfY29va2llX2V4cGlyYXRpb24iOnsiYnVja2V0IjoxMjA5NjAwLCJ2ZXJzaW9uIjpudWxsfSwidGZ3X3Nob3dfYmlyZHdhdGNoX3Bpdm90c19lbmFibGVkIjp7ImJ1Y2tldCI6Im9uIiwidmVyc2lvbiI6bnVsbH0sInRmd19kdXBsaWNhdGVfc2NyaWJlc190b19zZXR0aW5ncyI6eyJidWNrZXQiOiJvbiIsInZlcnNpb24iOm51bGx9LCJ0ZndfdXNlX3Byb2ZpbGVfaW1hZ2Vfc2hhcGVfZW5hYmxlZCI6eyJidWNrZXQiOiJvbiIsInZlcnNpb24iOm51bGx9LCJ0ZndfdmlkZW9faGxzX2R5bmFtaWNfbWFuaWZlc3RzXzE1MDgyIjp7ImJ1Y2tldCI6InRydWVfYml0cmF0ZSIsInZlcnNpb24iOm51bGx9LCJ0ZndfbGVnYWN5X3RpbWVsaW5lX3N1bnNldCI6eyJidWNrZXQiOnRydWUsInZlcnNpb24iOm51bGx9LCJ0ZndfdHdlZXRfZWRpdF9mcm9udGVuZCI6eyJidWNrZXQiOiJvbiIsInZlcnNpb24iOm51bGx9fQ%3D%3D&amp;frame=false&amp;hideCard=false&amp;hideThread=false&amp;id=1715688928806944943&amp;lang=en&amp;origin=https%3A%2F%2Fnetgamers.it%2Ft%2Fusa-fascismo-e-polizia-part-2%2F836096%2F200&amp;sessionId=29bf06409a54fcadc10eb870158a5a32ae1772c3&amp;theme=light&amp;widgetsVersion=01917f4d1d4cb%3A1696883169554&amp;width=550px" data-tweet-id="1715688928806944943"></iframe></div>

Попробовав это здесь, я вижу то же поведение для простой прямой ссылки: медиа-часть отсутствует (по крайней мере, в превью, которое я вижу рядом с этим ответом).

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

https://twitter.com/SpoutLore/status/1715688928806944943

Да, на самом деле использование iframe от Twitter — это крайняя мера. У использования iframes много недостатков. Discourse meta не использует этот компонент темы, и я не думаю, что они будут его использовать.

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

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

1 лайк

Это форум, который я администрирую (но он не принадлежит мне). Я тестирую это, потому что однобокс-функция уже какое-то время работает некорректно.