On September 4, 2024, we announced the deprecation of the Instagram Basic Display API.

Starting December 4, 2024, all requests to the Instagram Basic Display API will return an error message. We recommend that you migrate your app to the Instagram API to avoid any disruption to your services.

Visit our News for Developers blog post to learn more.

スタートガイド

このチュートリアルでは、アプリダッシュボードでアプリを構成し、短期Instagramユーザーアクセストークンを取得し、そのトークンを使用してInstagramユーザーのプロフィールのAPIをクエリする方法を示します。チュートリアルを完了すると、アプリのユーザーからアクセストークンとアクセス許可を取得する方法や、APIで基本的なクエリを実行する方法について、基本的な理解を得ることができます。

このチュートリアルは、コマンドラインツールまたはPostmanなどのアプリを使用して、基本的なcURLリクエストを実行できることを前提としています。

開始する前に

以下の情報が必要です。

  • メディアがあるInstagramアカウント
  • 所有している公開ウェブサイト。これには、GithubページHerokuウェブアプリなどの一般の無料ウェブサイト、または所有している実際のウェブサイトなどが含まれます。
  • Terminalなどのコマンドラインツール、またはcURLリクエストを実行できるPostmanなどのアプリ。

ステップ1: Facebookアプリを作成する

developers.facebook.comに移動して、[マイアプリ]にクリックしてアプリを新規作成し、[消費者] または[なし]アプリタイプを選択します。

アプリが作成されてアプリダッシュボードが表示されたら、[設定] > [基本]に移動し、ページの下までスクロールして[プラットフォームを追加]をクリックします。

[ウェブサイト]を選択し、ウェブサイトのURLを追加して、変更を保存します。プラットフォームは後でお好みに応じて変更できますが、このチュートリアルではウェブサイトを使用します。

ステップ2: Instagram基本表示を構成する

[製品]をクリックして[Instagram基本表示]製品を見つけ、[設定]をクリックしてアプリに追加します。

ページの下部にスクロールして[新しいアプリを作成]をクリックします。

表示されたフォームで、以下のガイドラインに従って各セクションに入力します。

表示名

先ほど作成したFacebookアプリの名前を入力します。

有効なOAuthリダイレクトURI

使用するウェブサイトのURLを入力します。これは、通常はリダイレクトクエリ文字列パラメーターをキャプチャできる専用URIですが、このチュートリアルでは、ご自分のウェブサイトのURLで問題ありません。

例: https://socialsizzle.heroku.com/auth/

URLの入力後、変更内容を保存し、もう一度URLをチェックしてください。URLの構造によっては、末尾にスラッシュが付加されている場合があります。正式なURLをどこかにコピーしておいてください。後のステップで、認証コードやアクセストークンを得るために必要になります。

コールバックURLの許可の取り消し

ウェブサイトのURLを再度入力します。これは、最終的には許可の取り消し通知を処理できるURLに変更しますが、このチュートリアルでは、先ほど指定したウェブサイトのURLを再利用できます。

データ削除リクエストコールバックURL

ウェブサイトのURLを再度入力します。許可の取り消しコールバックURLと同様に、最終的にはデータ削除リクエストを処理できるURLに変更しますが、今のところは自分のウェブサイトのURLを再利用できます。

アプリレビュー

チュートリアルの実施中はアプリをライブモードに切り替えないので、今はこのセクションをスキップします。

ステップ3: Instagramテストユーザーを追加する

[役割] > [役割]に移動し、下にある[Instagramテスター]セクションまでスクロールします。[Instagramテスターを追加]をクリックしてInstagramアカウントのユーザーネームを入力し、招待を送信します。

新しいウェブブラウザーを開き、www.instagram.comにアクセスして、先ほど招待したInstagramアカウントにサインインします。(プロフィールアイコン) > [プロフィールを編集] > [アプリとウェブサイト] > [テスターの招待]に移動し、招待を受け入れます。

これで、Instagramアカウントは、開発モードになっていても、Facebookアプリからアクセスできるようになりました。

ステップ4: テストユーザーを認証する

以下の認証ウィンドウURLを作成します。{app-id}はInstagramアプリのID ([アプリダッシュボード] > [製品] > [Instagram] > [基本表示] > [InstagramアプリID]フィールドに表示)に置き換え、{redirect-uri}はステップ2で指定したウェブサイトのURLに置き換えてください(「有効なOAuthリダイレクトURI」)。URLは完全に同じものでなければなりません

https://api.instagram.com/oauth/authorize
  ?client_id={app-id}
  &redirect_uri={redirect-uri}
  &scope=user_profile,user_media
  &response_type=code

以下はその例です。

https://api.instagram.com/oauth/authorize
  ?client_id=684477648739411
  &redirect_uri=https://socialsizzle.herokuapp.com/auth/
  &scope=user_profile,user_media
  &response_type=code

新しいブラウザーウィンドウを開いて、認証ウィンドウURLを読み込みます。認証ウィンドウが表示され、Instagramユーザーの名前、アプリの名前、アプリがリクエストするアクセス許可の説明が示されます。

認証ウィンドウにサインインしてInstagramテストユーザーを認証し、[許可]をクリックして、アプリにプロフィールデータへのアクセスを許可します。成功すると、前のステップで指定したリダイレクトURIにリダイレクトされ、URLに認証コードが付加されます。以下はその例です。

https://socialsizzle.herokuapp.com/auth/?code=AQDp3TtBQQ...#_

#_がリダイレクトURIの末尾に追加されていますが、これはコードそのものの一部ではありません。次のステップで使用できるように、このコード(#_ portionを除く)をコピーします。

認証コードは短期で、1時間だけ有効です。

ステップ5:トークンを取得するためにコードを交換する

cURLリクエストをサポートするコマンドラインツールまたはアプリを開いて、次のPOSTリクエストをAPIに送信します。

curl -X POST \
  https://api.instagram.com/oauth/access_token \
  -F client_id={app-id} \
  -F client_secret={app-secret} \
  -F grant_type=authorization_code \
  -F redirect_uri={redirect-uri} \
  -F code={code}

{app-id}{app-secret}{redirect-uri}{code}は、それぞれInstagramアプリID、Instagram app secret、リダイレクトURI、Facebookから送信されたコードに置き換えてください。末尾のスラッシュ(Instagramアプリを構成したときにアプリダッシュボードで追加された場合)を含めて、リダイレクトURIが前のステップで指定したものと完全に一致することを確認してください。

以下はその例です。

curl -X POST \
  https://api.instagram.com/oauth/access_token \
  -F client_id=684477648739411 \
  -F client_secret=eb8c7... \
  -F grant_type=authorization_code \
  -F redirect_uri=https://socialsizzle.herokuapp.com/auth/ \
  -F code=AQDp3TtBQQ...

成功すると、1時間有効な短期InstagramユーザーアクセストークンとInstagramテストユーザーのIDを含む、JSONエンコードされたオブジェクトがAPIから返されます。

{
  "access_token": "IGQVJ...",
  "user_id": 17841405793187218
}

次のステップで使用できるように、このアクセストークンとユーザーIDをコピーします。

ステップ6: ユーザーノードをクエリする

コマンドラインツールまたはアプリと以下のcURLリクエストを使用して、ユーザーのIDとユーザーネームをユーザーノードでクエリします。{user-id}{access-token}は、前のステップで受け取ったIDとアクセストークンに置き換えてください。

curl -X GET \
  'https://graph.instagram.com/{user-id}?fields=id,username&access_token={access-token}'

以下はその例です。

curl -X GET \
  'https://graph.instagram.com/17841405793187218?fields=id,username&access_token=IGQVJ...'

または、Meノードをクエリしてトークンを検査し、トークンを付与したInstagramユーザーのIDを判別して、そのユーザーをクエリすることもできます。以下はその例です。

curl -X GET \
  'https://graph.instagram.com/me?fields=id,username&access_token=IGQVJ...'

成功すると、InstagramユーザーのIDとユーザーネームを含む応答がAPIから返されます。

{
  "id": "17841405793187218",
  "username": "jayposiris"
}

次のステップ

これで、トークンを取得して基本的なクエリを実行する方法が理解できました。こちらのガイドを読んで、APIで何ができるかを学んでください。