本指南將說明如何使用授權視窗從 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" }