[2021.07.20追記] 現状のFacebookのアプリ管理の変更に合わせて、アプリのモードについて追記・修正を行いました。
[2021.03.22追記] アプリ作成時のダイアログの変更と入力必須項目の追加に伴い、修正しました。
[2020.08.04追記] Facebook開発者サイトで提供されている「User Token Generator」での「長期アクセストークン」取得の説明を追記しました。
[2020.07.24修正] Facebook開発者サイトでのアプリ作成手順・画面が変更されていたため、本ページについても大幅に修正しました。
[2020.07.20追記] 上記ページでの用語「Long-Lived Access Tokens」の和訳が、「長期ページトークン」から「長期アクセストークン」に変更になっていましたので、本ページについても修正しました。
Instagram API Platform が廃止(完全に停止するのは2020/06/29予定)となり、現在、簡単にInstagramの投稿を埋め込もうとすると、単体の投稿のみしかできません。
ただ、それでは自分が投稿し続けているInstagramのアピールやフォロー誘導策として表現不足なので、ビジュアル的にインパクトのある、タイムライン投稿の一覧が必要な場面もあると思います。
ここでは、Instagram API Platformの後継的な位置づけとして親会社のFacebook社が用意している、Instagram用のAPIを使って投稿一覧を実現する手順について、スクリーンショットつきで具体的にご紹介します。
ちなみに、下記は単体の投稿の埋め込み例です。
Instagramをパソコンまたはスマホで「ブラウザ」から開いたうえで、ページ右上の ボタンを押して、「埋め込み」を選んでHTMLタグを取得します(スマホのアプリ版ではこの操作はできません)。
なお、特にPRしていないのでフォロワー様少ないです。フォローして頂けると嬉しいです…m(__)m
「APIを利用する」というと、技術的に非常に敷居が高く感じてしまい、利用をためらわれる方も多いと思います。
そのようなことに配慮してか、Facebook社は
の2種類を用意しています。
今回は、簡単に使える方の「Instagram基本表示API」を利用して投稿一覧を実現していきます。
「Instagram基本表示API」を利用するメリット
ただ、簡単そうな印象とはいえ、それなりに手間がかかる点と、技術的に少し敷居が高い点は先にお伝えしておきます…。
それでは、「Instagram基本表示API」の開発者向けドキュメントを読み進めながら進めていきます。
まず、前提条件として必要なものがあります。
開発者向けサイト https://developers.facebook.com/ にアクセスして、 ページ右上の「マイアプリ」リンクをクリックして、「 アプリの作成」を選択します。
あらかじめ何かのプログラムが必要というわけではなく、名前や識別番号、アプリに許可するデータアクセスの権限などを行う設定を登録するものです。
開いたダイアログ上で、アプリに必要な機能として「コネクテッドエクスペリエンスを構築」を選択します。
次に、reCAPTCHAによるダイアログが開きますので、「私はロボットではありません」にチェックをつけて「送信」ボタンを押します。
次に、「アプリ表示名」と「アプリの連絡先メールアドレス」を入力して、「アプリIDを作成してください」ボタンを押します。
「アプリ表示名」欄の入力で問題がある場合は、欄の右端に のように赤いマークが表示され、マウスオーバーで理由がポップアップ表示されますので修正してください。
今回の例では、「view_list」と入力しました。
Instagramの商標権の侵害とならないようとのことで、 「insta」や「gram」を組み合わせた単語はNGで、エラーメッセージが表示されました。
「アプリの連絡先メールアドレス」欄は、あらかじめログインしているFacebookアカウントに登録されているものがセットされていると思います。
表示された画面の「製品を追加」部分から「Instagram Basic Display」枠内の「設定」ボタンを押します。
「設定」ボタンが見当たらない場合は、画面の左サイドメニューにある「プロダクト 」を押してください。
次に、表示されたページの下部に、「Instagramアプリを作成する前に、アプリの設定を更新してください。」と警告メッセージが表示されていますので、「設定」リンクをクリックします。
次に、ダッシュボードが表示されます。あるいは、左サイドメニューの「設定」-「ベーシック」を選択します。
次の項目は、アプリを公開する上で必須となりますので、入力・選択しておきます。
さらに、入力必須ではないようですが、次の項目が未入力だとメッセージが表示されますので、入力・選択しておくとよいでしょう。
最後に、表示されたページをスクロールして下部にある「プラットフォームを追加」ボタンを押します。
開いたダイアログで「ウェブサイト」を選択します。
「ウェブサイト」の入力欄が追加されるので、サイトのURLを入力し、「変更を保存」ボタンを押します。
ウェブサイトのトップのURLを入力すれば大丈夫です。後述する「認証ウィンドウURL」の取得時に、このURLにパラメータを付与された状態でリダイレクトされることになります。
例 : https://www.e-pokke.com/
上記1.で作成したFacebookアプリに対して、「プロダクト」を割り当てて使用できるようにします。
表示されたページで、左サイドメニューから「Instagram Basic Display」を選択します。
表示されたページ下部の「Create New App」ボタンを押します。
Facebookアプリの中に、Instagramアプリを作るというイメージでしょうか。少々分かりにくいですね。
初期表示で、上記1.のFacebookアプリ作成時に設定した「view_list」が入力欄にセットされていました。
引き続き、「アプリを作成」ボタンを押します。
画面が更新され、作成されたInstagramアプリの「アプリID」などの情報が表示されます。
引き続き、上記(a)の手順で、左サイドメニューの「Instagram Basic Display」から「Basic Display」リンクを押して、設定画面を開きます。
「クライアントOAuth設定」欄には、認証時のやり取りができるURLを入力しておきます。
ウェブサイトのトップのURLを入力すれば大丈夫です。
例 : https://www.e-pokke.com/
「承認を取り消す」欄と「データの削除リクエスト」欄にも、上記(d)と同じURLを入力しておきます。
ページ下部にある「変更を保存」ボタンを押して、設定内容を保存します。
そろそろ疲れてきますね…。
次に、上記2.で作成したInstagramアプリに対して、テストユーザーを追加します。
「テストユーザー」というと、テストを行うためだけに一時的に登録するユーザーのことかと思ってしまいますが、今回、投稿一覧を表示したいInstagramアカウントを指します。
おそらくFacebookアプリの立場から見た、Instagramアプリを利用するInstagramアカウントが「テストユーザー(テスター)」に当たるということなのでしょう。
画面の左サイドメニューにある「役割」を押し、さらに表示されたサブメニューで「役割」を押します。
表示されたページの下部にある「Instagramテスター」部分で、「Instagramテスターを追加」ボタンを押します。
テストユーザーとして、表示を行いたいInstagramアカウントを入力して、「送信」ボタンを押します。
今回は弊社の「e_pokke」を入力します。入力途中で、アカウント名がリストアップされるのでそこから選択してください。
画面が更新されて、テストユーザーが追加された状態になります。
新しいブラウザーのタブまたはウィンドウを開き、https://www.instagram.com/ にアクセスします。
表示したいInstagramアカウントでログインして、プロフィールアイコンを押し、「プロフィールを編集」ボタンを押します。
そして、「アプリとウェブサイト」メニューを押して、表示されたページで「テスターの招待」タブを押します。
ここで「承認する」ボタンを押します。
あともう一息です…。
次に、上記3.で追加したテストユーザーに対して、「認証」という操作を行います。
次の2つの情報から「認証ウィンドウURL」を生成してアクセスし、その応答から「認証コード」を取得するという流れで作業を進めます(下図の赤枠部分です。FacebookアプリのIDではないのでご注意ください)。
簡単に「認証ウィンドウURL」を生成できるよう、専用のフォームをご用意しました。
次のような「認証ウィンドウ」が表示されたら、「承認」ボタンを押してください。
問題なければ、上記の生成フォームの『「クライアントOAuth設定」で入力したURL』に入力されたURLに、「code」というURLパラメータ付きでリダイレクトされます。
ちなみに、承認を取り消す場合は、Instagramの「アプリとウェブサイト」メニューからいつでも解除できます。下記の手順を進めていく中で、やり直したい時には、一旦、承認を解除してからやり直すことができます。
承認した後、そのウィンドウは閉じないでそのままにしておいてください。後述の手順(b-2)で使用する可能性があります。
APIにアクセスする際に必要なトークンを取得します。
次の2つの方法をご紹介します。
Facebookアプリの管理ページで提供されている機能を利用する方法です。
テストユーザーとして上記(a)で追加したご自身のInstagramアカウント用の「長期アクセストークン」を発行します。
左サイドメニューから「Instagram Basic Display」を選択します。
表示されたページを下にスクロールし、「User Token Generator」の部分を表示し、「Generate Token」ボタンを押します。
「Generate Token」ボタンを押すと、別ウィンドウが開き、Instagramへのログインが求められます。
下図では、すでに、後述の(b-2)によってリンクしていたため、ログイン後に「リンク済みです」となっていますが、リンクされていない状態の場合は承認してください。
無事に承認が済むと、ダイアログがポップアップ表示されます。
「トークンのセキュリティを保つため、信頼するアプリ開発者とだけ共有してください」という警告が表示されますので、承諾のうえ、「I Understand」にチェックを付けてください。
この時、トークンの文字列が表示されますので、右端の「Copy」ボタンを押してから、手元のテキストファイルにペーストして保存してください。
「Done」ボタンを押すとダイアログが閉じてしまい、二度と同じトークンを確認できません。トークンをうまく保存できなかった場合には、改めてこの(b-1)の手順を最初からやり直してください。
このページで用意したフォームを利用する方法です。
次の2つの文字列を下記の「長期アクセストークン取得」フォームにペーストしてください。
「認証ウィンドウ」で「承認」後のブラウザのアドレス欄(URL)
400文字以上の長い文字列となります。すべてコピーして、下記のフォームにペーストしてください。
今回利用する「Instagram基本表示API」は、簡易的な利用を目的にしており、テストユーザーとして登録したご自身のInstagramアカウントについては、追加の権限の設定が不要なため、アプリを公開(ライブモード)する際に 「アプリレビュー」が不要 となっています。
→[以下、2021.07.20変更・追記]
開発者ドキュメント上では、「Instagram基本表示API」で使用する権限でも「アプリレビュー」が必要と記載されておりましたが、実際にライブモードに切り替える操作をすると、「アプリレビュー」なしで行えました。非常にややこしいのですが、「Instagram基本表示API」では「アプリレビュー」はまだ不要のようです。
なお、このページでご説明しているような、自分のInstagramのデータにしかアクセスしない場合には、アプリのモードを「ライブモード」に変更する必要はそもそもなく、「開発モード」のままで構いません(念のため、開発者向けドキュメントでも確認しましたが、特に問題ないようです)。
「開発モード」は、「非公開」や「準備中」という意味合いではありません。
アプリのモードは、「自分自身のデータのみを使って処理するか」、「広く一般の方(エンドユーザー=自分のサイトの利用者)のデータを使って処理するか」を切り替えるためのステータス(状態)です。
FACEBOOK for Developersのマイアプリページのページ上部にある「アプリのモード」欄にマウスを重ねると、次のようなポップアップの説明が表示されますが、そこにも上記と同様の説明が掲載されています。
【データ使用状況の確認について】
2021年3月頃より、ライブモードにしている場合には、定期的に「データ使用状況の確認(DUC)」を行う必要があります。
具体的には、Facebookから件名「(アプリ名)の新しい開発者アラート」というメールが事前に何通か届きますので、期日内にメール内のリンクからFACEBOOK for Developersのマイアプリページにアクセスして手続きします。
「Instagram基本表示API」での使用時は、特に「アプリレビュー」が必要な機能を使用していないため、各機能について確認した意思を表すチェックをつけ、最後に利用規約に沿っている旨の同意にチェックをつけるだけです。
なお、期日内にこの操作を行わないと、一旦、アプリが無効化されてしまい、長期アクセストークンの取得し直しからやり直さなければならなくなるため、注意が必要です。
開発モードにしておけばこのような煩わしさは発生しませんが、Facebook社としては、年に1回はアプリの利用状況の確認や利用規約への同意を確認したいスタンスのようです。その意味では、ライブモードに切り替えて、上記の期限内の対応を忘れないのがよいと思います。
<参考ドキュメント>
https://developers.facebook.com/docs/development/maintaining-data-access/data-use-checkup
(最新版の翻訳が完了していないかもしれませんが、「日本語に戻す」ボタンを押すと日本語で確認できます)
以降は、2021.07.20に追記する前の内容です-----ライブモードへの変更方法については残しておきます。
【ライブモードへの変更方法】
下図のようにして、ページ上部のアプリIDの右側にあるモード切替えスイッチを押して「ライブモード」に変更します。
下記以外にダイアログが表示される場合には、その指示に従って、不足している設定を入力してください。
これで、無事にモードが「ライブ」になり、公開されました。
大変お疲れ様でした。
上記で取得した「長期アクセストークン」を使用して表示する処理を作成してサーバーに設置し、Instagramの投稿一覧を表示すればよいだけです。
この表示処理として、例えば、javascriptでプログラムを用意してInstagramのAPIからの取得が行えればよいのですが、残念ながら、セキュリティ上の理由(クロスドメイン)からできません。
サーバー上に表示処理を行うプログラムを設置する必要があります。
サーバー上に設置するプログラムでやることは主に3つです。
(a) APIの呼び出し頻度
InstagramのAPIからのデータ取得には、若干、応答時間がかかります。
例えば、頻繁にアクセスのあるトップページなどにInstagram投稿一覧を表示する場合、毎回のアクセスでAPIから取得するよりは、一旦、どこかにデータを保存しておき、それを使用して表示するとよいでしょう。
現実的には、APIからの取得を定期的に行うか、前回の取得から一定時間経過以降の処理起動時に取得するようにするとよいと思います。
(b) 「長期アクセストークン」の保存と更新
同様に、「長期アクセストークン」自体についても、DBなどに保存しておき、適切なタイミングで更新するとよいでしょう。
具体的なプログラムについては、ここでは示しませんが、必要な方は弊社にお申し付けいただければ、迅速に製作・納品させていただきます。
ご検討いただければ幸いです。お気軽にご相談ください。
タイル状に最近の12件の投稿を表示するサンプルです。
各投稿をクリック(タップ)すると、別タブ(ウィンドウ)でInstagramの当該投稿ページを開きます。
大変長いページとなりました。
ここまでお読みいただきましてありがとうございます。
最後に、このページで説明したことをまとめたいと思います。
以上、お役に立てれば幸いです。