前提・実現したいこと
Instagram Graph APIを使用し、サムネイルを表示させたいです。
発生している問題・エラーメッセージ
https://arrown-blog.com/instagram-graph-api/#4Instagram_Graph_APIWeb
上記のブログ記事に記載されていたサンプルコードを利用していますが、エラーが出てサムネイル画像が表示されません。
サイト上ではHTMLは読み込まれず空のままです。
エラーでは「mediaが見つからない(読み込めない?)」と言われるのでインスタグラムのデータが読み込めないのかなと思うのですが、別のサンプルコードを使っても同じく「media」にエラーが出ました。
どうしたらエラーが解決できるのか分からず、ここで進捗が止まっています。
解決方法についてアドバイスをお聞かせいただけますと幸いです。
instagram.js:3 Uncaught TypeError: Cannot read property 'media' of undefined at Object.success (instagram.js:3) at c (jquery.min.js:2) at Object.fireWith [as resolveWith] (jquery.min.js:2) at l (jquery.min.js:2) at XMLHttpRequest.<anonymous> (jquery.min.js:2)
JS内の「const gallery_data = instagram_data["business_discovery"]["media"]["data"];」でエラーが出ているようです。
jQueryは<head>内に「<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>」で入れています。
ファイルはHTML・JS・PHPの3ファイルに分けていて、階層は以下になっています。
index02.htnl ∟js ∟instagram.js ∟php ∟instagram02.php
該当のソースコード
html
1<div class="article-instagram"> 2 <ul id="instaGallery" class="instaGallery"></ul> 3 <script src="js/instagram.js"></script> 4</div>
JS
1$.getJSON("../php/instagram02.php", function(instagram_data){ 2 3 const gallery_data = instagram_data["business_discovery"]["media"]["data"]; 4 let photos = ""; 5 const photo_length = 9; 6 7 for(let i = 0; i < photo_length ;i++){ 8 photos += '<li class="gallery-item"><img src="' + gallery_data[i].media_url + '"></li>'; 9 } 10 $("#instaGallery").append(photos); 11 12 });
PHP
1<?php 2 3ini_set('display_errors',1); 4error_reporting(E_ALL); 5 6$instagram_business_id = ‘instagramBusinessID’; 7$access_token = ‘XXXXXXX’; 8$target_user = 'instagramUserName’; 9 10//自分が所有するアカウント以外のInstagramビジネスアカウントが投稿している写真も取得したい場合は以下 11$query = 'business_discovery.username('.$target_user.'){id,followers_count,media_count,ig_id,media{caption,media_url,media_type,like_count,comments_count,timestamp,id}}'; 12 13$instagram_api_url = 'https://graph.facebook.com/v7.0/'; 14$target_url = $instagram_api_url.$instagram_business_id."?fields=".$query."&access_token=".$access_token; 15 16$ch = curl_init(); 17curl_setopt($ch, CURLOPT_URL, $target_url); 18curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 19 20$instagram_data = curl_exec($ch); 21curl_close($ch); 22 23echo $instagram_data; 24exit; 25
試したこと
下記記事で同じような悩みが記載されていたのですが、自己解決されたようで解決策が載っていませんでした…。
エラーを表示するコードを追記しています。
https://teratail.com/questions/211487
FACEBOOK for Developersのアクセストークンデバッガーでチェックをおこないました。
結果は有効の項目が「True」となっているので問題はないかなと思います。
補足
確認ブラウザはChrome、エラー内容はChromeのデベロッパーツールで確認しています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/19 08:54
2020/07/19 09:33 編集
2020/07/19 14:08
2020/07/19 14:17 編集
2020/07/21 12:50
2020/07/21 13:07
2020/07/22 13:22
2020/07/22 13:40
2020/07/23 11:30
2020/07/23 14:49
2020/07/23 15:18
2020/07/23 15:30
2020/07/24 14:34
2020/07/24 15:46