繁体   English   中英

使用特定标签获取Instagram照片

[英]Getting Instagram Photos With Specific Hashtag

在我的一个网站的主页上,我显示了3张最新图片的Instagram提要。 我通过以下代码实现了这一点:

function rudr_instagram_api_curl_connect( $api_url ){
    $connection_c = curl_init(); // initializing
    curl_setopt( $connection_c, CURLOPT_URL, $api_url ); // API URL to connect
    curl_setopt( $connection_c, CURLOPT_RETURNTRANSFER, 1 ); // return the result, do not print
    curl_setopt( $connection_c, CURLOPT_TIMEOUT, 20 );
    $json_return = curl_exec( $connection_c ); // connect and get json data
    curl_close( $connection_c ); // close connection
    return json_decode( $json_return ); // decode and return
}
$access_token = 'access_token';
$image_return = 3;
$user_search = rudr_instagram_api_curl_connect("https://api.instagram.com/v1/users/self/media/recent?access_token=".$access_token);

$user_id = $user_search->data[0]->id; // or use string 'self' to get your own media
$return = rudr_instagram_api_curl_connect("https://api.instagram.com/v1/users/self/media/recent?access_token=".$access_token."&count=".$image_return);

// var_dump( $return ); // if you want to display everything the function returns

foreach ($return->data as $post) {
    echo '<div class="col-sm-12 col-md-4 mb-3 text-center">
           <a href="'.$post->link.'" target="_blank">
           <img src="' . $post->images->standard_resolution->url . '"  class="img-fluid img-thumbnail bx-shadow"/>
           </a>
           <p><i class="fa fa-tag" aria-hidden="true"></i> ' . $post->caption->text . '<br><i class="fa fa-heart" aria-hidden="true"></i> '.$post->likes->count.' <i class="fa fa-comment" aria-hidden="true"></i> '.$post->comments->count.'<br><i class="fa fa-clock-o" aria-hidden="true"></i> ' . date('M j, Y', $post->created_time) . '</p>
          </div>';
}

最近,我一直在将照片上传到Instagram,而这些照片我并不想一定要显示在网站上,所以我想我可以找到一种只检索带有特定主题标签的图像的方法。 在Google进行快速搜索后,弹出了多个解决方案,但其中一个与我现有的代码相似,但很突出。 可以在这里找到该解决方案: 使用标签获取所有照片

我在解决方案中注意到,URL中仅包含一个tags变量,因此我通过添加$hashtag = "bodypiercing";变量来修改了代码$hashtag = "bodypiercing"; 并将其作为$return = rudr_instagram_api_curl_connect("https://api.instagram.com/v1/tags/".$hashtag."/users/self/media/recent?access_token=".$access_token."&count=".$image_return);添加到URL $return = rudr_instagram_api_curl_connect("https://api.instagram.com/v1/tags/".$hashtag."/users/self/media/recent?access_token=".$access_token."&count=".$image_return);

这是完整的代码:

function rudr_instagram_api_curl_connect( $api_url ){
    $connection_c = curl_init(); // initializing
    curl_setopt( $connection_c, CURLOPT_URL, $api_url ); // API URL to connect
    curl_setopt( $connection_c, CURLOPT_RETURNTRANSFER, 1 ); // return the result, do not print
    curl_setopt( $connection_c, CURLOPT_TIMEOUT, 20 );
    $json_return = curl_exec( $connection_c ); // connect and get json data
    curl_close( $connection_c ); // close connection
    return json_decode( $json_return ); // decode and return
}
$access_token = 'access_token';
$image_return = 3;
$hashtag = "bodypiercing";
$user_search = rudr_instagram_api_curl_connect("https://api.instagram.com/v1/users/self/media/recent?access_token=".$access_token);

$user_id = $user_search->data[0]->id; // or use string 'self' to get your own media
$return = rudr_instagram_api_curl_connect("https://api.instagram.com/v1/tags/".$hashtag."/users/self/media/recent?access_token=".$access_token."&count=".$image_return);

// var_dump( $return ); // if you want to display everything the function returns

foreach ($return->data as $post) {
    echo '<div class="col-sm-12 col-md-4 mb-3 text-center">
           <a href="'.$post->link.'" target="_blank">
           <img src="' . $post->images->standard_resolution->url . '"  class="img-fluid img-thumbnail bx-shadow"/>
           </a>
           <p><i class="fa fa-tag" aria-hidden="true"></i> ' . $post->caption->text . '<br><i class="fa fa-heart" aria-hidden="true"></i> '.$post->likes->count.' <i class="fa fa-comment" aria-hidden="true"></i> '.$post->comments->count.'<br><i class="fa fa-clock-o" aria-hidden="true"></i> ' . date('M j, Y', $post->created_time) . '</p>
          </div>';
}

但是,这导致以下结果:

Notice: Trying to get property of non-object in /home/jesse666toxik/public_html/php/index.main.php on line 42

Warning: Invalid argument supplied for foreach() in /home/jesse666toxik/public_html/php/index.main.php on line 42

对于这个变量,我可能做错了什么?

var_dump结果:

Notice
: Undefined property: stdClass::$data in
/home/jesse666toxik/public_html/php/index.main.php
on line
37


Notice
: Trying to get property of non-object in
/home/jesse666toxik/public_html/php/index.main.php
on line
37

NULL 
Notice
: Trying to get property of non-object in
/home/jesse666toxik/public_html/php/index.main.php
on line
42


Warning
: Invalid argument supplied for foreach() in
/home/jesse666toxik/public_html/php/index.main.php
on line
42

根据您所链接到的页面上的信息使用错误的URL,可以将您将部分井号标签URL插入原始用户的URL中。

引用的文章使用以下网址:

$url = 'https://api.instagram.com/v1/tags/'.$tag.'/media/recent?client_id='.$client_id;

与往常一样,答案可以在API文档中找到。 您无法通过特定用户的主题标签进行搜索。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM