Встраивание твитов с использованием URL-адреса, полученного от Twitter API: некоторые из них возвращают ошибки

Я использую API TwitteroAuth.

Я ищу твиты с помощью API поиска: https://developer.twitter.com/en/docs/tweets/search/api-reference/get-search-tweets.html

Встраивание с помощью этого метода (как вы увидите из кода): https://developer.twitter.com/en/docs/twitter-for-websites/embedded-tweets/guides/embedded-tweet-parameter-reference

Вот мой PHP (уже получил объект json из твиттера):

<?php
$tweet_array = json_decode(json_encode($tweets), true);
  // Turn each item into tweet
  foreach ($tweet_array['statuses'] as $tweet ) {
    // Variables
    $tweet_text = $tweet['text'];
    $twitter_username = $tweet['user']['name'];
    $twitter_handle = $tweet['user']['screen_name'];
    $output = "";
    // Blockquote wrapper
    $output .= "<blockquote class='twitter-tweet' data-lang='en'>";
    // Text
    $output .= "<p lang='en' dir='ltr'>$tweet_text</p>";
    // User name and Handle
    $output .= "&mdash; $twitter_username (@$twitter_handle)";
    // Link to tweet
    foreach ($tweet['entities'] as $key) {
      // So don't break search
      if (empty($key)) {
        // Do nothing
      } else {
        // Check for extended_url key
        if (array_key_exists("expanded_url",($key[0]))) {
          // Boolean to confirm retrieval of URL
          $url = true;
          // URL output
          $url_string = $key[0]['expanded_url'];
          $output .= "<a href='$url_string'>$url_string</a>";
        }
      }
    }
    $output .= "</blockquote>";
    // if URL present, output code
    if ($url == true) {
      echo $output;
    }
  }

Этот код выводит это, смесь рабочих и неработающих твитов:

Встраивание твитов с использованием URL-адреса, полученного от Twitter API: некоторые из них возвращают ошибки

Выводимый код выглядит так (рабочие и не рабочие примеры):

Работающий!

<twitterwidget class = "twitter-tweet twitter-tweet-rendered" id = "twitter-widget-1" style = "position: static; visibility: visible; display: block; transform: rotate(0deg); max-width: 100%; width: 500px; min-width: 220px; margin-top: 10px; margin-bottom: 10px;" data-tweet-id = "1057283419007143936"></twitterwidget>

Не работает!

<blockquote class = "twitter-tweet twitter-tweet-error" data-lang = "en" data-twitter-extracted-i1540936951520207597 = "true"><p lang = "en" dir = "ltr">He’ll say anything before the election. Don’t take the bait. Focus on ending the hate. Hug a kid. Be nice to someon… <!-- SHORTENED LINK TAKEN OUT FOR STACK OVERFLOW --></p>— Amy Klobuchar (@amyklobuchar)<a href = "https://twitter.com/i/web/status/1057234049587167232">https://twitter.com/i/web/status/1057234049587167232</a></blockquote>

Любая помощь будет безмерно оценена

Я не вижу, где вы напечатали "<twitterwidget>" в своем php.

Ibu 30.10.2018 23:14

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

user5223227 01.11.2018 10:27
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
1 603
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я нашел ответ. Вместо того, чтобы использовать метод преобразования расплывчатых цитат, я вместо этого использовал PHP для печати сценария JS для каждого контейнера с уникальным идентификатором twitter. 100% успех:

   <?php  /* OUTPUT */
  // Count tweets for debug
  $number_tweets = count($tweet_array['statuses']);
  echo "<div class='cols'>";
  // Loop through each tweet
  foreach ($tweet_array['statuses'] as $tweet ) {
    // Get tweet ID
    $id = $tweet["id"];
    // Create grid item to be targeted by Twitter's widgets.js
    echo "<div class='grid-item'><div id='container-$id'></div></div>";
    // Add to array for JS objet
    $js_array[] = "twttr.widgets.createTweet('$id', document.getElementById('container-$id'));";
  }
  echo "</div>";
  // Begin Javascript
  echo '<script>';
  // Print out JS to convert items to Tweets
  $t = 1;
  foreach ($js_array as $js ) {
    echo $js;

    $t++;
  }
 echo '</script>';

Другие вопросы по теме