Как получить фотографии через API Instagram?

При исполнении этого кода выводится ошибка

Warning: Invalid argument supplied for foreach() in Z:\home\api.com\www\index.php on line 14

На многих сайтах делается через foreach, но у меня всегда здесь ошибка

Код:

<?php

// new api
$accessToken = 'здесь был мой токен'; // получаем токен

  $url = "https://graph.instagram.com/me/media?fields=id,media_type,media_url,caption,timestamp,thumbnail_url,permalink,children{fields=id,media_url,thumbnail_url,permalink}&limit=50&access_token=" . $accessToken;
  $instagramCnct = curl_init();
  curl_setopt($instagramCnct, CURLOPT_URL, $url);
  curl_setopt($instagramCnct, CURLOPT_RETURNTRANSFER, 1);
  $media= json_decode(curl_exec($instagramCnct));
  curl_close($instagramCnct);
  $instaFeed = array();

  foreach ($media->data as $mediaObj) {
    if (!empty($mediaObj->children)) {
      foreach ($mediaObj->children->data as $children) {
        $instaFeed[$children->id]['src'] = $children->media_url;
        $instaFeed[$children->id]['preview'] = $children->thumbnail_url;
        $instaFeed[$children->id]['link'] = $children->permalink;
        $instaFeed[$children->id]['media_type'] = $children->media_type;
      }
    } else {
      $instaFeed[$mediaObj->id]['src'] = $mediaObj->media_url;
      $instaFeed[$mediaObj->id]['preview'] = $mediaObj->thumbnail_url;
      $instaFeed[$mediaObj->id]['link'] = $mediaObj->permalink;
      $instaFeed[$mediaObj->id]['media_type'] = $mediaObj->media_type;
    }
  }

?>

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <style>
    .insta_post {
      max-width: 300px;
    }
  </style>
</head>
<body>

  <?php foreach($instaFeed as $key => $post): ?>

      <?php if ($post['media_type'] === 'VIDEO'): ?>
      <video autoplay muted loop controls class="insta_post">
       <source src="<?php echo $post['src']; ?>" type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"'>
        <a href="<?php echo $post['link']; ?>"><img src="<?php echo $post['preview']; ?>" class="insta_post"> </a>
      </video>
      <?php else: ?>
      <a href="<?php echo $post['link']; ?>"><img src="<?php echo $post['src']; ?>" class="insta_post"> </a>
      <?php endif; ?>
   
  <?php endforeach; ?>
</body>
</html>

Ответы (1 шт):

Автор решения: muted.spectre

Попробуйте посмотреть вывод команды json_decode(curl_exec($instagramCnct)) Он ругается на то, что вы в foreach (14 строка) оперируете не массивом, как ожидается, а чем-то другим. Скорее всего, это связано с тем, что приходит вам из curl_exec, и там находится не то, что ожидается в коде. Для более глубокого понимания проблемы, рекомендую посмотреть на вывод этой команды.

→ Ссылка