アクセストークンとアクセス許可を取得する

このガイドでは、認証ウィンドウを使用して、Instagramユーザーから短期Instagramユーザーアクセストークンアクセス許可を取得する方法を説明します。

ステップ1: 認証を取得する

アプリユーザーは認証ウィンドウを使用して、アクセス許可短期Instagramユーザーアクセストークンをアプリに付与することができます。ユーザーがアプリにログインして、アクセスが許可されているデータを選択すると、そのユーザーはアプリにリダイレクトされ、認証コードを取得します。それによって短期アクセストークンと交換できます。

プロセスを開始するには、認証ウィンドウを取得してアプリユーザーに表示します。

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

クエリ文字列パラメーター

stateを除くすべてのパラメーターが必須です。

パラメーター値の例説明

client_id
必須
数値文字列

990602627938098

[アプリダッシュボード] > [製品] > [Instagram] > [基本表示]で表示されるInstagramアプリID。

redirect_uri
必須
文字列

https://socialsizzle.herokuapp.com/auth/

アプリユーザーがアクセス許可リクエストを承認または却下した後、ユーザーのリダイレクト先となるURI。これが、有効なoAuth URIのリストに含まれるベースURIの1つと正確に一致していることを確認してください。アプリダッシュボードによりURIの末尾にスラッシュが追加されていることがあります。リストをチェックして確認することをおすすめします。

response_type
必須
文字列

code

これはcodeに設定します。

scope
必須
コンマまたは区切りリスト

user_profile,user_media

アプリユーザーからリクエストされるアクセス許可のコンマ区切りリストまたはURLエンコードされたスペース区切りリスト。user_profileが必要です。

state
文字列

1

サーバー固有の状態を示す任意の値。たとえば、CSRF問題に対する保護としてこれを使用できます。ユーザーがアプリにリダイレクトされて戻る際に、このパラメーターと値がインクルード(追加)されます。

認証ウィンドウURLの例

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

認証成功

認証に成功すると、ユーザーはredirect_uriにリダイレクトされ、codeクエリ文字列パラメーターを通じて認証コードが渡されます。アプリが短期Instagramユーザーアクセストークンと交換できるようにコードをキャプチャします。

コードは1時間のみ有効で、一度だけ使用できます。

成功した認証リダイレクトの例

https://socialsizzle.herokuapp.com/auth/?code=AQBx-hBsH3...#_

#_がリダイレクトURIの末尾に付加されますが、これはコードそのものではないので削除してください。

キャンセルされた認証

ユーザーが認証フローをキャンセルした場合、ユーザーはredirect_uriにリダイレクトされ、以下のエラーパラメーターが付加されます。そのような場合に適切にエラー処理をし、ユーザーに対して適切なメッセージを表示するのは、アプリ側の責任です。

パラメーター

error

access_denied

error_reason

user_denied

error_description

The+user+denied+your+request

キャンセルされた認証リダイレクトの例

https://socialsizzle.herokuapp.com/auth/?error=access_denied
  &error_reason=user_denied
  &error_description=The+user+denied+your+request

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

コードを受け取ったら、以下のエンドポイントにPOSTリクエストを送信し、短期アクセストークンと交換します。

POST https://api.instagram.com/oauth/access_token

本文パラメーター

POSTリクエスト本文に次のパラメーターを含めます。

パラメーター値の例説明

client_id
必須
数値文字列

990602627938098

[アプリダッシュボード] > [製品] > [Instagram] > [基本表示]で表示されるInstagramアプリID。

client_secret
必須
文字列

a1b2C3D4

[アプリダッシュボード] > [製品] > [Instagram] > [基本表示]で表示されるInstagram App Secret。

code
必須
文字列

AQBx-hBsH3...

ユーザーがredirect_uriにリダイレクトされる際に、codeパラメーターで渡される認証コード。

grant_type
必須
文字列

authorization_code

これはauthorization_codeに設定します。

redirect_uri
必須
文字列

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

ユーザーをFacebookの認証ウィンドウに誘導した際にFacebookに渡されたリダイレクトURI。これは同じURIでなければなりません。同じでない場合、リクエストは却下されます。

リクエストの例

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

成功した応答の例

成功すると、アプリユーザーの短期アクセストークンとユーザーIDを含むJSONペイロードがAPIから返されます。

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

access_token値をキャプチャします。これは、Instagram基本表示APIのエンドポイントにアクセスするためにアプリが使用できる、ユーザーの短期Instagramユーザーアクセストークンです。

却下された応答の例

リクエストの形式が正しくない場合、APIからエラーが返 されます。

{
  "error_type": "OAuthException",
  "code": 400,
  "error_message": "Matching code was not found or was already used"
}