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.
このチュートリアルでは、アプリダッシュボードでアプリを構成し、短期Instagramユーザーアクセストークンを取得し、そのトークンを使用してInstagramユーザーのプロフィールのAPIをクエリする方法を示します。チュートリアルを完了すると、アプリのユーザーからアクセストークンとアクセス許可を取得する方法や、APIで基本的なクエリを実行する方法について、基本的な理解を得ることができます。
このチュートリアルは、コマンドラインツールまたはPostmanなどのアプリを使用して、基本的なcURLリクエストを実行できることを前提としています。
developers.facebook.comに移動して、[マイアプリ]にクリックしてアプリを新規作成し、[消費者] または[なし]アプリタイプを選択します。
アプリが作成されてアプリダッシュボードが表示されたら、[設定] > [基本]に移動し、ページの下までスクロールして[プラットフォームを追加]をクリックします。
[ウェブサイト]を選択し、ウェブサイトのURLを追加して、変更を保存します。プラットフォームは後でお好みに応じて変更できますが、このチュートリアルではウェブサイトを使用します。
[製品]をクリックして[Instagram基本表示]製品を見つけ、[設定]をクリックしてアプリに追加します。
ページの下部にスクロールして[新しいアプリを作成]をクリックします。
表示されたフォームで、以下のガイドラインに従って各セクションに入力します。
先ほど作成したFacebookアプリの名前を入力します。
使用するウェブサイトのURLを入力します。これは、通常はリダイレクトクエリ文字列パラメーターをキャプチャできる専用URIですが、このチュートリアルでは、ご自分のウェブサイトのURLで問題ありません。
例: https://socialsizzle.heroku.com/auth/
URLの入力後、変更内容を保存し、もう一度URLをチェックしてください。URLの構造によっては、末尾にスラッシュが付加されている場合があります。正式なURLをどこかにコピーしておいてください。後のステップで、認証コードやアクセストークンを得るために必要になります。
ウェブサイトのURLを再度入力します。これは、最終的には許可の取り消し通知を処理できるURLに変更しますが、このチュートリアルでは、先ほど指定したウェブサイトのURLを再利用できます。
ウェブサイトのURLを再度入力します。許可の取り消しコールバックURLと同様に、最終的にはデータ削除リクエストを処理できるURLに変更しますが、今のところは自分のウェブサイトのURLを再利用できます。
チュートリアルの実施中はアプリをライブモードに切り替えないので、今はこのセクションをスキップします。
[役割] > [役割]に移動し、下にある[Instagramテスター]セクションまでスクロールします。[Instagramテスターを追加]をクリックしてInstagramアカウントのユーザーネームを入力し、招待を送信します。
新しいウェブブラウザーを開き、www.instagram.comにアクセスして、先ほど招待したInstagramアカウントにサインインします。(プロフィールアイコン) > [プロフィールを編集] > [アプリとウェブサイト] > [テスターの招待]に移動し、招待を受け入れます。
これで、Instagramアカウントは、開発モードになっていても、Facebookアプリからアクセスできるようになりました。
以下の認証ウィンドウ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時間だけ有効です。
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をコピーします。
コマンドラインツールまたはアプリと以下の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で何ができるかを学んでください。