本指南將講解如何使用授權視窗獲取 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 > 基本顯示。 |
|
| 當用戶允許或拒絕權限要求時,我們會將用戶重新導向至這個 URI。請確保此 URI 與您的有效 oAuth URI 清單的其中一個基本 URI 完全相符。請注意,應用程式管理中心可能會為您的 URI 後面加上斜線,建議您檢查清單確認。 |
|
| 將此值設定為 |
|
| 需要向應用程式用戶要求獲取的權限逗號分隔清單或網址編碼空格分隔清單。必須提供 |
|
| 指明伺服器特定狀態的可選值。例如,您可以用它來預防 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 > 基本顯示。 |
|
| 您的 Instagram 應用程式密鑰將展示於應用程式管理中心 > 產品 > Instagram > 基本顯示。 |
|
| 將用戶重新導向至您的 |
|
| 將此值設定為 |
|
| 將用戶重新導向至我們的授權視窗時,您向我們傳送的重新導向 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" }