문서가 업데이트되었습니다.
한국어로 번역이 아직 완료되지 않았습니다.
영어 업데이트됨: 2021. 8. 26.

액세스 토큰 및 권한 받기

이 가이드에서는 인증 창을 사용하여 Instagram 사용자로부터 단기 실행Instagram 사용자 액세스 토큰권한을 받는 방법을 설명합니다.

1단계: 인증받기

인증 창에서는 앱 사용자가 앱에 권한단기 실행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를 제외한 모든 매개변수는 필수 항목입니다.

매개변수샘플 값설명

client_id
필수
숫자 문자열

990602627938098

앱 대시보드 > 제품 > Instagram > 기본 디스플레이에 표시된 Instagram 앱 ID입니다.

redirect_uri
필수
문자열

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

사용자가 권한 요청을 허용하거나 거부한 후 사용자를 리디렉션하는 URL입니다. 이 URI는 유효한 oAuth URI의 리스트에 있는 기본 URI 중 하나와 정확히 일치해야 합니다. 앱 대시보드에서 URI 끝에 슬래시를 추가했을 수 있으므로 리스트에서 이를 확인하는 것이 좋습니다.

response_type
필수
문자열

code

이 값을 code로 설정합니다.

scope
필수
쉼표 또는 공백으로 구분된 리스트

user_profile,user_media

앱 사용자에게 요청할 권한의 쉼표 또는 URL로 인코딩된 공백으로 구분된 리스트입니다. user_profile은 필수 항목입니다.

state
문자열

1

각 서버의 상태를 나타내는 선택적 값입니다. 예를 들어 이 값을 사용하여 CSRF 문제를 방지할 수 있습니다. 사용자를 다시 리디렉션할 때 이 매개변수와 값이 포함될 것입니다.

인증 창 URL 샘플

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 앱 ID입니다.

client_secret
필수
문자열

a1b2C3D4

앱 대시보드 > 제품 > Instagram > 기본 디스플레이에 표시된 Instagram 앱 시크릿 코드입니다.

code
필수
문자열

AQBx-hBsH3...

사용자를 redirect_uri로 리디렉션할 때 code 매개변수로 전달한 인증 코드입니다.

grant_type
필수
문자열

authorization_code

이 값을 authorization_code로 설정합니다.

redirect_uri
필수
문자열

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

사용자가 인증 창으로 이동할 때 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"
}