이 가이드에서는 인증 창을 사용하여 Instagram 사용자로부터 단기 실행Instagram 사용자 액세스 토큰과 권한을 받는 방법을 설명합니다.
인증 창에서는 앱 사용자가 앱에 권한과 단기 실행Instagram 사용자 액세스 토큰을 부여할 수 있습니다. 사용자가 로그인하고 앱에서 액세스하도록 허용할 데이터를 선택하고 나면 Facebook이 인증 코드와 함께 사용자를 앱으로 리디렉션합니다. 그러면 단기 실행 액세스 토큰으로 교환할 수 있습니다.
이 프로세스를 시작하려면 인증 창을 가져와서 사용자에게 표시합니다.
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입니다. |
|
| 사용자가 권한 요청을 허용하거나 거부한 후 사용자를 리디렉션하는 URL입니다. 이 URI는 유효한 oAuth URI의 리스트에 있는 기본 URI 중 하나와 정확히 일치해야 합니다. 앱 대시보드에서 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 앱 시크릿 코드입니다. |
|
| 사용자를 |
|
| 이 값을 |
|
| 사용자가 인증 창으로 이동할 때 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...
응답이 성공하면 API는 앱 사용자의 단기 실행 액세스 토큰과 사용자 ID를 포함한 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" }