Встраивание твитов с идентификатором с помощью циклического ответа API в PHP - PullRequest
0 голосов
/ 16 мая 2019

Что я сделал

  • Я успешно получил набор твитов из API Twitter и могу проанализировать json, чтобы показать атрибуты твита в тексте на веб-странице.

Что я хочу сделать

Я хочу использовать идентификатор из ответа и встроить их в страницу.

Мои предположения

Я предполагаю, что мне нужно использовать цикл foreach и выполнять итерацию по JSON, а затем передавать каждый идентификатор в фрагмент кода, который фактически выполняет встраивание.

Моя проблема

Код, который я нашел здесь использует javascript для встраивания. Этот код прекрасно работает, когда твит-идентификатор жестко запрограммирован. Мне нужно передать каждый идентификатор, полученный из ответа, и не могу понять, как передать массив php в фрагмент javascript.

Вот что я сделал:

У меня есть php-скрипт, который успешно получает ответ JSON из твиттера Код ниже:

    <?php

    //using a open sourced php library to complete the API call
    require_once('TwitterAPIExchange.php')

    $settings = array(
      'oauth_access_token' => "my_token",
      'oauth_access_token_secret' => "my_token_secret",
      'consumer_key' => "my_key"
      'consumer_secret' => "my_key_secret"
    )

    $url = "https://api.twitter.com/1.1/statuses/user_timeline.json";
    $requestMethod = "GET";
    if (isset($_GET['user']))  {$user = preg_replace("/[^A-Za-z0-9_]/", '', $_GET['user']);}  else {$user  = "son_mi";}
    $getfield = "?screen_name=$user&count=$count";
    $twitter = new TwitterAPIExchange($settings);
    $string = json_decode($twitter->setGetfield($getfield)
    ->buildOauth($url, $requestMethod)
    ->performRequest(),$assoc = TRUE);
    if(array_key_exists("errors", $string)) {echo "<h3>Sorry, there was a problem.</h3><p>Twitter returned the following error message:</p><p><em>".$string[errors][0]["message"]."</em></p>";exit();}
    ?>

Это код, который я нашел, который может вставлять твит с Javascript

    <style>
      #tweet {
        width: 400px !important;
      }

      #tweet iframe {
        border: none !important;
        box-shadow: none !important;
      }
    </style>

    <div id="tweet" tweetID="515490786800963584"></div>

    <script sync src="https://platform.twitter.com/widgets.js"></script>

    <script>

      window.onload = (function(){

        var tweet = document.getElementById("tweet");
        var id = tweet.getAttribute("tweetID");

        twttr.widgets.createTweet(
          id, tweet,
          {
            conversation : 'none;,
            cards        : 'hidden',
            linkColor    : '#cc0000',
            theme        : 'light'
          })
        .then (function (el) {
          el.contentDocument.querySelector(".footer").style.display = "none";
        });

       });

    </script>

Код также можно найти здесь .

Как я могу передать идентификаторы из ответа Twitter

Где взять ID здесь:

    <div id="tweet" tweetID="515490786800963584"></div>

Я попытался удалить эту строку:

    <div id="tweet" tweetID="515490786800963584"></div>

затем в сценарии:

    <script sync src="https://platform.twitter.com/widgets.js"></script>
    <script>

      window.onload = (function(){

        <?php foreach ($string as $item_tweets)?>
        {
          var tweet = document.getElementById("<$php echo $item_tweets?>");
          var id = tweet.getAttribute("<?php echo $item_tweets.['id']?>");

          twttr.widgets.createTweet(
            id, tweet,
            {
              conversation : 'none',
              cards        : 'hidden',
              linkColor    : '#cc0000',
              theme        : 'light'
            })
          .then (function (el) {
            el.contentDocument.querySelector(".footer").style.display = "none";
          });
        }
     });

Этот код не работает, и я не уверен, что это так, потому что что-то в корне неверно в том, как я помещаю PHP foreach в теги, или я просто неправильно выполняю итерацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...