Instagram Graph APIを使う機会があったので、アカウントの設定・アクセストークンの取得を行い、自分の投稿を表示するまでの流れを試してみます。
Instagramのアカウントをプロアカウントに切り替える
まずはInstagramのアカウントをプロアカウントに切り替えます。
プロアカウントには「クリエイターアカウント」と「ビジネスアカウント」がありますが、今回はクリエイターアカウントに切り替えます。
アカウントの切り替えはPCからはできないようなので注意してください。
スマホアプリからハンバーガーメニューを開いて、設定を選択します。
アカウントを選択します。
プロアカウントに切り替えるを選択します。
クリエイターを選択します。
クリエイターアカウントの説明が表示されるので、次へを選択します。
アカウントに合ったカテゴリを選択します。
連絡先情報を必要に応じて変更します。
今設定した2項目をプロフィールに表示するかを設定します。
設定が終わったら完了を選択します。
Facebookページへのリンクですが、ここは後から設定するので「今はFacebookにリンクしない」を選択します。
これでプロアカウントへの切り替えが完了しました。
Facebookページにリンクする
次にInstagramのアカウントをFacebookページにリンクします。
今回はFacebookページを作成していないので、リンク時に作成するようにします。
引き続きスマホアプリで「プロフィールを編集」を選択します。
プロフィール情報のページを選択します。
Facebookページにリンクですが、既にFacebookページがある場合には「既存ページをリンク」を選択してください。
今回はFacebookページがないので、「facebookページを作成」を選択します。
続けるを選択します。
紐づけするアカウントでFacebookにログインします。
ログインを選択します。
これでFacebookページが作成され、プロアカウントとの連携ができました。
Facebookアプリの作成
次にFacebookアプリを作成します。
Facebook Developersにアクセスして、上部メニューから マイアプリ > アプリを作成 をクリックします。
アプリ名を入力して、アプリIDを作成します。
Facebookアプリが作成できました。
これでFacebookのAPIを使用することができるようになります。
1つ目のアクセストークンの取得
次にアクセストークンの取得ですが、今回アクセストークンを3段階取得する必要があります。
まず1つ目の取得ですが、Facebook DevelopersのグラフAPIエクスプローラにアクセスして、トークンを取得 > ユーザーアクセストークンを取得 を選択します。
アクセスを許可する項目を選択します。
各項目の説明についてはこちらをご確認ください。
今回は「イベント・グループ・ページ」の「pages_show_list」「business_management」「manage_pages」と、「その他」の「instagram_basic」にチェックを入れました。
選択後、アクセストークンを取得をクリックします。
ログインを求められるのでログインして進みます。
先ほど設定した項目のアクセス許可を求められるので、OKをクリックします。
アクセストークンが表示されるので、後で使えるようにメモにコピペしておきます。
2つ目のアクセストークンの取得
先ほど取得した1つ目のアクセストークンは有効期限は1時間しかないので、有効期限を延長する2つ目のアクセストークンを取得します。
先ほど作成したFacebookアプリのダッシュボード画面に戻り、設定 > ベーシックを選択します。
アプリIDとapp secretをメモにコピペします。
app secretはデフォルトだと非表示になっているので、右の表示ボタンをクリックして、パスワードを入力して表示させてからコピペしてください。
1つ目のアクセストークンとアプリID、app secretを使って、以下URLにブラウザでアクセスします。
https://graph.facebook.com/v4.0/oauth/access_token?grant_type=fb_exchange_token&client_id=【アプリID】&client_secret=【app secret】&fb_exchange_token=【1つ目のアクセストークン】
以下のように表示されるので、access_tokenの値をメモにコピペしておきます。
この値が2つ目のアクセストークンになります。
{"access_token":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","token_type":"bearer","expires_in":5183999}
3つ目のアクセストークンの取得
次は2つ目のアクセストークンを使い、有効期限のない3つ目のアクセストークンを取得します。
ブラウザで以下URLにアクセスします。
https://graph.facebook.com/v4.0/me?access_token=【2つ目のアクセストークン】
以下のように表示されるので、idの値をメモにコピペします。
{ "name": "XXXXXX", "id": "XXXXXXXXXXXXXXXX" }
先ほどのidを使い、ブラウザで以下URLにアクセスします。
https://graph.facebook.com/v4.0/【id】/accounts?access_token=【2つ目のアクセストークン】
以下のように表示されるので、access_tokenをメモにコピペします。
Facebookページが複数ある場合はdataの値が複数表示されるので、注意してください。
{ "data": [ { "access_token": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "category": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "category_list": [ { "id": "XXXXXXXXXX", "name": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" } ], "name": "XXXXX", "id": "XXXXXXXXXXXXXXX", "tasks": [ "ANALYZE", "ADVERTISE", "MODERATE", "CREATE_CONTENT", "MANAGE" ] } ], "paging": { XXXXX } } }
これで3つ目のアクセストークンが取得できました。
この3つ目のアクセストークンを使って投稿データを取得するようになります。
アクセストークンの確認
取得したアクセストークンが問題ないかを確認します。
Facebook Developersのアクセストークンデバッカーにアクセスして、先ほどのアクセストークンを入力してデバックをクリックします。
有効期限が受け取らないになっていれば問題なさそうです。
InstagramのビジネスアカウントIDの取得
最後にInstagramのビジネスアカウントIDを取得します。
グラフAPIエクスプローラにアクセスして、アクセストークンに3つ目のアクセストークンをいれます。
その下のURLに「me?fields=instagram_business_account」を入れて右の送信をクリックします。
以下のように表示されるので、instagram_business_accountのidをメモにコピペします。
{ "instagram_business_account": { "id": "XXXXXXXXXXXXXXXXX" }, "id": "XXXXXXXXXXXXXXX" }
これで必要な情報が一通り揃いました。
投稿の取得
ここまでで取得した情報を使って、実際に投稿を取得してみます。
以下のURLで取得できます。
https://graph.facebook.com/v4.0/【ビジネスアカウントID】?fields=【取得するパラメータ】&access_token=【3つ目のアクセストークン】
パラメータで指定できる項目はこちらをご確認ください。
PHPでデータの取得を行います。
get.php
<?php $accessToken = 'アクセストークン'; // アクセストークン $businessId = 'ビジネスアカウントID'; // ビジネスアカウントID $fields = 'media{caption,media_url,permalink,timestamp}'; // 取得するデータのパラメータ $url = 'https://graph.facebook.com/v4.0/'.$businessId."?fields=".$fields."&access_token=".$accessToken; $jsonData = file_get_contents($url); $json = json_decode($jsonData, true); echo json_encode($json["media"]["data"]);
データが取得できていることが確認できました。
Instagramから投稿を取得するデモページ
JavaScriptでこのデータを取得して、HTMLに表示させてみます。
まずはHTMLです。
<div id="sample"></div>
JavaScriptのAjaxでget.phpの内容を取得して、HTMLに埋め込むようにします。
$(function() { $.ajax({ url: 'get.php', dataType: 'json', success: function(data) { var insert = '<ul>'; for (var i = 0; i < data.length; i++) { insert += '<li>'; // 画像とリンク先 insert += '<a href="' + data[i]['permalink'] + '" target="_blank">'; insert += '<img src="' + data[i]['media_url'] + '" class="instagram-image" />'; insert += '</a>'; insert += '<div class="instagram-data">'; // 日付 var d = new Date(data[i]['timestamp']); var year = d.getFullYear(); var month = d.getMonth() + 1; var day = d.getDate(); insert += '<div class="date">' + year + '/' + month + '/' + day + '</div>'; insert += '</div>'; insert += '</li>'; }; insert += '</ul>'; $('#sample').append(insert); } }); });
これで投稿内容を表示することができました。
Instagramから投稿を取得して表示するデモページ
今回表示部分をJavaScriptで行いましたが、PHPでそのまま表示まで行っても問題ありません。
【参考サイト】
- どう使う?Instagramに新しく追加されたクリエイターアカウント
- InstagramグラフAPI – Instagramプラットフォーム
- Instagram Graph APIの基本的な使い方・Webサイトにインスタの写真を埋め込みする方法 | Arrown
- 新Instagram Graph APIを使ってインスタグラムの画像をWebサイトに表示させる | GOO-UP(グーアップ)
コメントが承認されるまで時間がかかります。