InstagramGraphAPIでインスタ投稿をサイトに表示する【その2】
PHP
その1で表示に必要なアクセストークンの取得ができました。
表示に必要な主な項目
デザインに合わせて必要な項目をパラメータに設定します。
media_product_type | 投稿の種別(FEED,IGTVなど) *公式ドキュメントにはAD, FEED, IGTV, or STORYの記載あり |
media_type | IMAGE,CAROUSEL_ALBUM, IMAGE |
caption | 投稿本文 |
permalink | 投稿のURL |
timestamp | 投稿日時 |
media_url | 投稿の画像URL(VIDEOの時は動画URLが入る) |
thumbnail_url | media_type VIDEOの時、サムネイル画像のURL |
公式ドキュメント
https://developers.facebook.com/docs/instagram-api/reference/ig-media/
APIを使用してデータの取得(v11.0)
v11.0のところは使用バージョンに合わせてください。 media_product_type はv10.0以降取得可能です。
<?php
$count = 10; //取得件数
$query = [
'businessId' =>'【InstagramビジネスID】', // InstagramビジネスID
'fields' => 'name,media.limit('.$count.'){caption,like_count,media_url,permalink,timestamp,username,thumbnail_url,media_product_type,media_type}',//取得したい項目
'access_token' => '【アクセストークン3】' // トークン3
];
$url = 'https://graph.facebook.com/v11.0/'.$query["businessId"].'?fields='.urlencode($query["fields"]).'&access_token='.$query["access_token"];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch));
curl_close($ch);
// エラーが帰ってきた場合
if (property_exists($result, 'error')) {
echo 'エラーが発生しました';
echo $url;
exit;
}
// 投稿がなかった場合
if (!property_exists($result, 'media')) {
echo '投稿がありません';
exit;
}
?>
取得した値を表示する
<?php foreach($result->media->data as $v) { ?>
<?php
// デザインに合わせて必要な項目を出力する
echo $v->permalink;
?>
<?php } ?>
キャプションはそのまま表示は長いので、ある程度の文字数でカットしたり、日付表示も好きなフォーマットにしてください。