我是PHP的新手,我无法弄清楚如何处理Instagram API,以便(例如)通过user_id 3发布的最近3项提取标准分辨率图像的链接列表。< / p>
这是我迄今为止所创造的内容:
<?php
function get_instagram($user_id,$count)
{
$user_id = '3';
$count = '3';
$url = 'https://api.instagram.com/v1/users/'.$user_id.'/media/recent/?access_token=13137.f59def8.1a759775695548999504c219ce7b2ecf&count='.$count;
$jsonData = $json_decode((file_get_contents($url)));
$data = $jsonData->data;
$result = '<ul>';
foreach ($data as $key => $value) {
$result .= '<li><a href='.$value->link.' ><img src="'.$value->images->standard_resolution->url.'" width="70" height="70" /></a></li> ';
}
$result .= '</ul>';
return $result;
}
结果是一个空白页面..你能帮助我吗?
答案 0 :(得分:6)
你需要回复或对返回的数据做一些事情(你的json_decode函数前面还有一个$
)
试试这个:
<?php
function get_instagram($user_id=15203338,$count=6,$width=190,$height=190){
$url = 'https://api.instagram.com/v1/users/'.$user_id.'/media/recent/?access_token=13137.f59def8.1a759775695548999504c219ce7b2ecf&count='.$count;
// Also Perhaps you should cache the results as the instagram API is slow
$cache = './'.sha1($url).'.json';
if(file_exists($cache) && filemtime($cache) > time() - 60*60){
// If a cache file exists, and it is newer than 1 hour, use it
$jsonData = json_decode(file_get_contents($cache));
} else {
$jsonData = json_decode((file_get_contents($url)));
file_put_contents($cache,json_encode($jsonData));
}
$result = '<div id="instagram">'.PHP_EOL;
foreach ($jsonData->data as $key=>$value) {
$result .= "\t".'<a class="fancybox" data-fancybox-group="gallery"
title="'.htmlentities($value->caption->text).' '.htmlentities(date("F j, Y, g:i a", $value->caption->created_time)).'"
style="padding:3px" href="'.$value->images->standard_resolution->url.'">
<img src="'.$value->images->low_resolution->url.'" alt="'.$value->caption->text.'" width="'.$width.'" height="'.$height.'" />
</a>'.PHP_EOL;
}
$result .= '</div>'.PHP_EOL;
return $result;
}
echo get_instagram();
?>
<小时/> 使用
$value->location->name
如果你想检查它是否为空,如果它不显示它,但是如果它被设置,你也想在它上面添加一个字符串,你会做类似的事情:
$location = (!empty($value->location->name))?'@'.$value->location->name:null;
然后使用$location
回复您想要的位置。
答案 1 :(得分:2)
我已经通过编写一个小脚本扩展了所选答案,该脚本可以用于尝试此操作的任何人的样板。
使用所有变量进行设置,并以基本标记开始。使用Instagrams API文档中的选择器,您可以根据需要构建其输出。
这个版本专门用于WordPress,只需对图像大小进行一次小调整即可在任何PHP应用程序中使用。
<?php
function instagram($count = 10, $width = 640, $height = 640) {
$user_id = 123456789;
$access_token = '123456789';
$size = wp_is_mobile() ? 'low_resolution' : 'standard_resolution';
$url = 'https://api.instagram.com/v1/users/'.$user_id.'/media/recent/?access_token='.$access_token.'&count='.$count;
$cache_location = './'.sha1($url).'.json';
$cache_time = '-1 hour';
if (file_exists($cache_location) && filemtime($cache_location) > strtotime($cache_time)) {
// If a cache file exists, and it is newer than 1 hour, use it
$jsonData = json_decode(file_get_contents($cache_location));
} else {
$jsonData = json_decode((file_get_contents($url)));
file_put_contents($cache_location,json_encode($jsonData));
}
foreach ($jsonData->data as $key=>$value) {
echo '<div>';
echo '<img src="'.$value->images->$size->url.'"/>';
echo '</div>';
}
}
基本用法
<?php echo instagram(); ?>
高级用法
<?php echo instagram($count = 1, $width = 100, $height = 100); ?>
答案 2 :(得分:0)
Welp,这是一个星期前工作的,但现在,它给了我一个PHP错误:
“消息:试图获取非对象的属性”
与foreach声明一致:foreach ($jsonData->data as $key=>$value)
原来我的JSON Feed实际上已损坏,我的一些instagrams的标题丢失了,所以我不得不添加一个if空语句。我现在也使用不同的方法,好奇你的想法,效果很好!
<?php
function fetchData($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 20);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
$result = fetchData("https://api.instagram.com/v1/users/USER ID HERE/media/recent/?access_token=ACCES TOKEN HERE&count=14");
$cache = './instagram.json';
if(file_exists($cache) && filemtime($cache) > time() - 60*60){
// If a cache file exists, and it is newer than 1 hour, use it
$instaData = json_decode(file_get_contents($cache));
} else {
$instaData = json_decode((file_get_contents($result)));
file_put_contents($cache,json_encode($instaData));
}
foreach ($instaData->data as $post) {
if(empty($post->caption->text)) {
// Do Nothing
}
else {
echo '<a class="instagram-unit" target="blank" href="'.$post->link.'">
<img src="'.$post->images->low_resolution->url.'" alt="'.$post->caption->text.'" width="100%" height="auto" />
<div class="instagram-desc">'.htmlentities($post->caption->text).' | '.htmlentities(date("F j, Y, g:i a", $post->caption->created_time)).'</div></a>';
}
}
?>