このガイドでは、認証ウィンドウを使用して、Instagramユーザーから短期Instagramユーザーアクセストークンとアクセス許可を取得する方法を説明します。
アプリユーザーは認証ウィンドウを使用して、アクセス許可と短期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
を除くすべてのパラメーターが必須です。
パラメーター | 値の例 | 説明 |
---|---|---|
|
| [アプリダッシュボード] > [製品] > [Instagram] > [基本表示]で表示されるInstagramアプリID。 |
|
| アプリユーザーがアクセス許可リクエストを承認または却下した後、ユーザーのリダイレクト先となるURI。これが、有効なoAuth URIのリストに含まれるベースURIの1つと正確に一致していることを確認してください。アプリダッシュボードによりURIの末尾にスラッシュが追加されていることがあります。リストをチェックして確認することをおすすめします。 |
|
| これは |
|
| アプリユーザーからリクエストされるアクセス許可のコンマ区切りリストまたはURLエンコードされたスペース区切りリスト。 |
|
| サーバー固有の状態を示す任意の値。たとえば、CSRF問題に対する保護としてこれを使用できます。ユーザーがアプリにリダイレクトされて戻る際に、このパラメーターと値がインクルード(追加)されます。 |
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
にリダイレクトされ、以下のエラーパラメーターが付加されます。そのような場合に適切にエラー処理をし、ユーザーに対して適切なメッセージを表示するのは、アプリ側の責任です。
パラメーター | 値 |
---|---|
|
|
|
|
|
|
https://socialsizzle.herokuapp.com/auth/?error=access_denied &error_reason=user_denied &error_description=The+user+denied+your+request
コードを受け取ったら、以下のエンドポイントにPOST
リクエストを送信し、短期アクセストークンと交換します。
POST https://api.instagram.com/oauth/access_token
POSTリクエスト本文に次のパラメーターを含めます。
パラメーター | 値の例 | 説明 |
---|---|---|
|
| [アプリダッシュボード] > [製品] > [Instagram] > [基本表示]で表示されるInstagramアプリID。 |
|
| [アプリダッシュボード] > [製品] > [Instagram] > [基本表示]で表示されるInstagram App Secret。 |
|
| ユーザーが |
|
| これは |
|
| ユーザーを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" }