【问题标题】:Twitter REST API: Possible to Hotlink Twitter Images? Why No Image Display In Firefox?Twitter REST API:可以热链接 Twitter 图像吗?为什么 Firefox 中没有图像显示?
【发布时间】:2017-05-20 22:31:22
【问题描述】:

我正在尝试从 Twitter REST API 中提取图像并显示这些图像。

Insodoing 我的 PHP/HTML 代码无法在我的本地主机 PHP 内置开发人员服务器的浏览器中显示图像,因此我陷入了逻辑僵局。我更喜欢 Firefox 作为更安全(私有)的浏览器,所以我首先在 Firefox 中进行开发。

我认为图像不显示的问题可能是 Twitter 不允许热链接到他们的图像的问题,但是我刚刚在 Chrome 和 Internet Explorer 浏览器中测试了相同的代码(如下),所有图像看起来都很好。

所以我的 [更新] 问题是:为什么这些图像没有出现在 Firefox 或 Firefox Developer Edition 浏览器中? Twitter 显然不存在通过其 API 提取的图像的热链接问题,这在 Chrome 和 Internet Explorer 浏览器中都可以正常显示的图像证明了这一点。

谁知道这个有趣问题的答案?

<!DOCTYPE html>
<html lang="en">
<head>
        <?php 

        // USED TO DEBUG WHY HTTPS WAS NOT WORKING IN THE BEGINNING
        // var_dump(stream_get_wrappers()); 

        ?>


        <?php 

            // REQUIRE TWITTEROAUTH LIBRARY
            require "twitteroauth/autoload.php";

            // I HAVE HACKED AROUND WITH THIS, BUT DON'T SEE WHY ABRAHAM IS NECESSARY SINCE THERE IS NO FOLDER NAMED ABRAHAM,
            // BUT CODE DOES NOT WORK WITHOUT THIS, SO LEAVE IT IN!  :)
            use Abraham\TwitterOAuth\TwitterOAuth;

            // DECLARE VARIABLES OF KEYS, SECRET, TOKEN, & TOKEN_SECRET
            $CONSUMER_KEY = "12345";
            $CONSUMER_SECRET = "12345";
            $access_token = "12345";
            $access_token_secret = "12345"

            // DEFINE NEW CONNECTION VARIABLE: I.E. CONNECTION TO TWITTER VIA TWITTEROAUTH
            $connection = new TwitterOAuth($CONSUMER_KEY, $CONSUMER_SECRET, $access_token, $access_token_secret);

            // CREATE MULTIPLE-PARAMETER QUERY AS ARRAY
            $query = array(
              "q" => "#MickeyMouse",
              "count" => "1000",
              "include_entities" => "true"
            );

            // MAKE CONNECTION TO TWITTER, GET METHOD FOR "SEARCH/TWEETS", PASS ARRAY AS QUERY
            $result = $connection->get("search/tweets", $query);

            // TEST OUTPUT FOR DEBUGGING
            //var_dump($result);

            // CREATE VARIABLES:  NEW EMPTY ARRAYS
            $ArrayPhotoURLs = array();      

            // FOR LOOP,  
            foreach ($result->statuses as $content) {

                // IF EACH TWEET/STATUS HAS MEDIA,
                if (isset($content->entities->media)) {

                    // THEN GET THOSE MEDIA URLS
                    foreach ($content->entities->media as $media) {
                        $media_url = $media->media_url; // Or $media->media_url_https for the SSL version.

                        // AND ASSIGN/APPEND EACH MEDIA URL TO THE ARRAY OF MEDIA URLs
                        $ArrayPhotoURLs[] = $media_url; 

                        // TEST OUTPUT FOR DEBUGGING
                        //print(gettype($media_url));
                        //print_r($media_url);
                        //var_dump($media_url);
                    }

                }

            }

            // TEST OUTPUT FOR DEBUGGING
            //var_dump($ArrayPhotoURLs);

            // COUNT IMAGES IN ARRAY OF TWITTER IMAGE URLS - TO BE USED BELOW TO CREATE DYNAMIC LIST / ANCHOR / IMG ITEMS
            $imagecount = count($ArrayPhotoURLs); 

            // TEST OUTPUT FOR DEBUGGING
            echo $imagecount;
        ?>

</head>

<?php // HTML LAYOUT CODE BEGINS HERE ?>
<body style="">
    <div class="container">

        <div>
                <?php 
                    // FOR LOOP, PRINT HTML WITH URL AS BOTH A HREF & IMG SRC PARAMETERS & ANCHOR TEXT
                    foreach ($ArrayPhotoURLs as $PhotoURL) {

                        echo '<a href="',    $PhotoURL    ,'">',
                        '<img src="',$PhotoURL, '">', $PhotoURL,
                        '</img></a><br/>';
                    }
                ?>          
        </div>

    </div>
</body>
</html>

【问题讨论】:

    标签: php html twitter twitter-oauth


    【解决方案1】:

    对于那些处于类似绑定中的人: Firefox 显然将域 pbs.twimg.com 视为跟踪器,并阻止与该子域建立的所有连接。考虑在浏览器中禁用跟踪保护或实施服务器端 shim 以预加载图像。

    见: https://bugzilla.mozilla.org/show_bug.cgi?id=1458915

    【讨论】:

      猜你喜欢
      • 2019-07-25
      • 1970-01-01
      • 1970-01-01
      • 2015-01-10
      • 1970-01-01
      • 2015-03-13
      • 1970-01-01
      • 1970-01-01
      • 2017-02-02
      相关资源
      最近更新 更多