通过遍历PHP中的API响应嵌入带有ID的Tweet

时间:2019-05-16 15:41:55

标签: javascript php json foreach

我做了什么

  • 我已经从Twitter的API成功获取了一组推文,并且可以解析json以在网页上的文本中显示推文的属性。

想要做的

我想使用响应中的ID并将其嵌入到页面中。

我的假设

我假设我需要使用一个foreach循环并遍历JSON,然后将每个ID传递给实际进行嵌入的代码段。

我的问题

我发现的代码here使用javascript进行了嵌入。当对推特ID进行硬编码时,此代码可以正常工作。我需要传递从响应中获得的每个ID,并且无法弄清楚如何将我的php数组传递给javascript代码。

这是我所做的:

我有一个PHP脚本,可以成功地从twitter检索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>

也可以在here中找到该代码。

如何从Twitter响应中传递ID

此处的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放入标签内的方式根本上有问题,或者我只是实现了错误的迭代。

0 个答案:

没有答案