如何通过 API 获取带有 PHP 的 instagram 照片?
How to get instagram photos with PHP by API?
最近两天我试图通过原始 PHP 显示我的 Instagram 个人资料中的照片。但是我收到了这些错误。
Notice: Trying to get property of non-object in E:\xampp7\htdocs\instagram\index.php on line 29
Warning: Invalid argument supplied for foreach() in E:\xampp7\htdocs\instagram\index.php on line 29
我从 instagram API 创建了正确的 身份验证 。我请求的 API clients access
有效(clientId, userId, accessToken
)。当我使用 PHP 失败时,我尝试使用 JavaScript 插件 instafeedjs。现在它运作良好。这是我的 PHP 代码,如下所示:-
<body>
<?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/3550421370/media/recent/?access_token=MY_VALID_ACCESS_TOKEN_IS_HERE");
$result = json_decode($result);
foreach ($result->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>';
}
}
?>
</body>
您的 API 端点错误。
这是 API 从 Instagram 获取 用户 最近的媒体:
https://api.instagram.com/v1/users/self/media/recent/?access_token=ACCESS-TOKEN
获取 access_token 所有者发布的最新媒体。
参数
access_token A valid access token.
max_id Return media earlier than this max_id.
min_id Return media later than this min_id.
计数 Count of media to return.
阅读更多:https://www.instagram.com/developer/endpoints/users/#get_users_media_recent_self
我得到了解决方案。使用 JSON 数据作为 multi-dimensional 数组很简单。各种数据都可以在这个数组中。
<?php
$access_token = "My_Access_Token";
$photo_count = 9;
$json_link = "https://api.instagram.com/v1/users/self/media/recent/?";
$json_link .="access_token={$access_token}&count={$photo_count}";
$json = file_get_contents($json_link);
$obj = json_decode(preg_replace('/("\w+"):(\d+)/', '\1:"\2"', $json), true);
echo "<pre>";
print_r($obj);
echo "</pre>";
foreach ($obj['data'] as $post){
$pic_text = $post['caption']['text'];
$pic_link = $post['link'];
$pic_like_count = $post['likes']['count'];
$pic_comment_count=$post['comments']['count'];
$pic_src=str_replace("http://", "https://", $post['images']['standard_resolution']['url']);
$pic_created_time=date("F j, Y", $post['caption']['created_time']);
$pic_created_time=date("F j, Y", strtotime($pic_created_time . " +1 days"));
echo "<div class='col-md-4 item_box'>";
echo "<a href='{$pic_link}' target='_blank'>";
echo "<img class='img-responsive photo-thumb' src='{$pic_src}' alt='{$pic_text}'>";
echo "</a>";
echo "<p>";
echo "<p>";
echo "<div style='color:#888;'>";
echo "<a href='{$pic_link}' target='_blank'>{$pic_created_time}</a>";
echo "</div>";
echo "</p>";
echo "<p>{$pic_text}</p>";
echo "</p>";
echo "</div>";
}
?>
最近两天我试图通过原始 PHP 显示我的 Instagram 个人资料中的照片。但是我收到了这些错误。
Notice: Trying to get property of non-object in E:\xampp7\htdocs\instagram\index.php on line 29
Warning: Invalid argument supplied for foreach() in E:\xampp7\htdocs\instagram\index.php on line 29
我从 instagram API 创建了正确的 身份验证 。我请求的 API clients access
有效(clientId, userId, accessToken
)。当我使用 PHP 失败时,我尝试使用 JavaScript 插件 instafeedjs。现在它运作良好。这是我的 PHP 代码,如下所示:-
<body>
<?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/3550421370/media/recent/?access_token=MY_VALID_ACCESS_TOKEN_IS_HERE");
$result = json_decode($result);
foreach ($result->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>';
}
}
?>
</body>
您的 API 端点错误。 这是 API 从 Instagram 获取 用户 最近的媒体:
https://api.instagram.com/v1/users/self/media/recent/?access_token=ACCESS-TOKEN
获取 access_token 所有者发布的最新媒体。
参数
access_token A valid access token.
max_id Return media earlier than this max_id.
min_id Return media later than this min_id.
计数 Count of media to return.
阅读更多:https://www.instagram.com/developer/endpoints/users/#get_users_media_recent_self
我得到了解决方案。使用 JSON 数据作为 multi-dimensional 数组很简单。各种数据都可以在这个数组中。
<?php
$access_token = "My_Access_Token";
$photo_count = 9;
$json_link = "https://api.instagram.com/v1/users/self/media/recent/?";
$json_link .="access_token={$access_token}&count={$photo_count}";
$json = file_get_contents($json_link);
$obj = json_decode(preg_replace('/("\w+"):(\d+)/', '\1:"\2"', $json), true);
echo "<pre>";
print_r($obj);
echo "</pre>";
foreach ($obj['data'] as $post){
$pic_text = $post['caption']['text'];
$pic_link = $post['link'];
$pic_like_count = $post['likes']['count'];
$pic_comment_count=$post['comments']['count'];
$pic_src=str_replace("http://", "https://", $post['images']['standard_resolution']['url']);
$pic_created_time=date("F j, Y", $post['caption']['created_time']);
$pic_created_time=date("F j, Y", strtotime($pic_created_time . " +1 days"));
echo "<div class='col-md-4 item_box'>";
echo "<a href='{$pic_link}' target='_blank'>";
echo "<img class='img-responsive photo-thumb' src='{$pic_src}' alt='{$pic_text}'>";
echo "</a>";
echo "<p>";
echo "<p>";
echo "<div style='color:#888;'>";
echo "<a href='{$pic_link}' target='_blank'>{$pic_created_time}</a>";
echo "</div>";
echo "</p>";
echo "<p>{$pic_text}</p>";
echo "</p>";
echo "</div>";
}
?>