這份文件已更新。
中文(香港) 的翻譯尚未完成。
英文更新時間:2021年8月23日

獲取存取憑證和權限

本指南將講解如何使用授權視窗獲取 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 > 基本顯示

redirect_uri
必填項目
字串

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

當用戶允許或拒絕權限要求時,我們會將用戶重新導向至這個 URI。請確保此 URI 與您的有效 oAuth URI 清單的其中一個基本 URI 完全相符。請注意,應用程式管理中心可能會為您的 URI 後面加上斜線,建議您檢查清單確認。

response_type
必要項目
字串

code

將此值設定為 code

scope
必要項目
逗號或空格分隔清單

user_profile,user_media

需要向應用程式用戶要求獲取的權限逗號分隔清單或網址編碼空格分隔清單。必須提供 user_profile

state
字串

1

指明伺服器特定狀態的可選值。例如,您可以用它來預防 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,並附加以下錯誤參數。在這些情況下,趁此機會向用戶展示合適的訊息

參數

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 > 基本顯示

client_secret
必要項目
字串

a1b2C3D4

您的 Instagram 應用程式密鑰將展示於應用程式管理中心 > 產品 > Instagram > 基本顯示

code
必要項目
字串

AQBx-hBsH3...

將用戶重新導向至您的 redirect_uri 時,我們在 code 參數中傳送的授權代碼。

grant_type
必填項目
字串

authorization_code

將此值設定為 authorization_code

redirect_uri
必填項目
字串

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

將用戶重新導向至我們的授權視窗時,您向我們傳送的重新導向 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...

成功回應範例

成功後,API 將傳回一個 JSON 承載,包括應用程式用戶的短期存取憑證及用戶編號。

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

擷取 access_token 值。這是用戶的短期 Instagram 存取憑證,您的應用程式可它來存取 Instagram 基本顯示 API 端點

已拒絕回應範例

如果要求出現某種錯誤,API 將回報錯誤。

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