On September 4, 2024, we announced the deprecation of the Instagram Basic Display API.

Starting December 4, 2024, all requests to the Instagram Basic Display API will return an error message. We recommend that you migrate your app to the Instagram API to avoid any disruption to your services.

Visit our News for Developers blog post to learn more.

시작하기

이 튜토리얼은 앱 대시보드에서 앱을 구성하고 단기 실행Instagram 사용자 액세스 토큰을 가져온 다음 이 토큰을 사용하여 Instagram 사용자의 프로필을 API에 쿼리하는 방법을 보여줍니다. 튜토리얼을 완료하고 나면 앱 사용자로부터 액세스 토큰 및 권한을 가져오는 방법과 API로 기본 쿼리를 수행하는 방법에 대한 기본 지식을 이해하게 될 것입니다.

이 튜토리얼에서는 명령줄 도구를 사용하거나 Postman과 같은 앱으로 기본 cURL 요청을 수행할 수 있다고 가정합니다.

시작하기 전에

다음과 같은 항목이 필요합니다.

1단계: Facebook 앱 만들기

developers.facebook.com에서 내 앱을 클릭하여 새 앱을 만들고, 소비자 또는 없음앱 유형을 선택합니다.

앱을 만들었으면 앱 대시보드에서 설정 > 기본으로 이동하여 페이지 하단으로 스크롤하고 플랫폼 추가를 클릭합니다.

웹사이트를 선택하고 웹사이트의 URL을 추가한 후에 변경 사항을 저장합니다. 원한다면 나중에 플랫폼을 변경할 수 있으나 이 튜토리얼에서는 웹사이트를 사용합니다.

2단계: Instagram 기본 디스플레이 구성

제품을 클릭하고 Instagram 기본 디스플레이 제품을 찾아서 설정을 클릭하여 이를 앱에 추가합니다.

페이지 하단으로 스크롤한 다음, 새 앱 만들기를 클릭합니다.

양식이 나타나면 아래의 가이드라인에 따라 각 섹션을 작성합니다.

표시 이름

조금 전에 생성한 Facebook 앱의 이름을 입력합니다.

유효한 OAuth 리디렉션 URI

웹사이트의 URL을 입력합니다. 이것은 일반적으로 리디렉션 쿼리 문자열 매개변수를 캡처할 수 있는 전용 URI이지만, 이 튜토리얼에서는 웹사이트 URL을 사용하면 됩니다.

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

URL을 입력한 뒤에는 변경 사항을 저장하고 다시 한번 URL을 확인합니다. URL 구조에 따라 뒤에 슬래시(/)를 추가했을 수 있습니다. 나중의 단계에서 인증 코드와 액세스 토큰을 가져오는 데 필요하므로 전체 URL을 어딘가에 복사해두세요.

승인 해제 콜백 URL

웹사이트의 URL을 다시 입력합니다. 최종적으로는 이것을 승인 해제 알림을 처리할 수 있는 URL로 변경해야 하지만, 이 튜토리얼에서는 웹사이트 URL을 다시 사용할 수 있습니다.

데이터 삭제 요청 콜백 URL

웹사이트의 URL을 다시 입력합니다. 승인 해제 콜백 URL과 마찬가지로 최종적으로는 이것을 데이터 삭제 요청을 처리할 수 있는 URL로 변경해야 하지만, 이 튜토리얼에서는 웹사이트 URL을 다시 사용할 수 있습니다.

앱 검수

튜토리얼에서는 앱을 라이브 모드로 전환하지 않으므로 지금은 이 섹션을 건너뜁니다.

3단계: Instagram 테스트 사용자 추가

역할 > 역할로 이동하고 Instagram 테스터 섹션으로 스크롤을 내립니다. Instagram 테스터 추가를 클릭하고 Instagram 계정의 사용자 이름을 입력한 후 초대장을 발송합니다.

새 웹 브라우저를 열고 www.instagram.com으로 이동한 후 방금 초대한 Instagram 계정으로 로그인합니다. (프로필 아이콘) > 프로필 편집 > 앱 및 웹사이트 > 테스터 초대로 이동해서 초대를 수락합니다.

이제 Facebook 앱이 개발 모드일 때 Instagram 계정에 액세스할 수 있게 됩니다.

4단계: 테스트 사용자 인증

아래의 인증 창 URL을 구성한 후 {app-id}는 Instagram 앱 ID로 교체하고(앱 대시보드 > 제품 > Instagram > 기본 디스플레이 > Instagram 앱 ID 필드에서) {redirect-uri}는 2단계에서 제공한 웹사이트 URL("유효한 OAuth 리디렉션 URI")로 교체합니다. URL은 정확히 똑같아야 합니다.

https://api.instagram.com/oauth/authorize
  ?client_id={app-id}
  &redirect_uri={redirect-uri}
  &scope=user_profile,user_media
  &response_type=code

예를 들면 다음과 같습니다.

https://api.instagram.com/oauth/authorize
  ?client_id=684477648739411
  &redirect_uri=https://socialsizzle.herokuapp.com/auth/
  &scope=user_profile,user_media
  &response_type=code

새 브라우저 창을 열고 인증 창 URL을 읽어들입니다. Instagram 사용자 이름, 앱 이름, 앱이 요청하는 권한에 대한 설명이 나타나고 표시되어야 합니다.

인증 창으로 로그인하여 Instagram 테스트 사용자를 인증한 후 인증을 클릭하여 앱에 프로필 데이터에 액세스할 수 있는 권한을 부여합니다. 인증이 성공하면 페이지가 이전 단계에 포함된 리디렉션 URI로 이동되고 인증 코드가 첨부됩니다. 예를 들면 다음과 같습니다.

https://socialsizzle.herokuapp.com/auth/?code=AQDp3TtBQQ...#_

#_은 리디렉션 URI에 끝에 추가되지만 코드 자체의 일부는 아닙니다. 다음 단계에서 사용하기 위해 이 코드를 (#_ portion 없이) 복사합니다.

인증 코드는 단기 실행 코드이고 1시간 동안만 유효합니다.

5단계: 코드를 토큰으로 교환

cURL 요청을 지원하는 명령줄 도구나 앱을 열고 다음의 POST 요청을 API로 전송합니다.

curl -X POST \
  https://api.instagram.com/oauth/access_token \
  -F client_id={app-id} \
  -F client_secret={app-secret} \
  -F grant_type=authorization_code \
  -F redirect_uri={redirect-uri} \
  -F code={code}

{app-id}, {app-secret}, {redirect-uri}{code}는 Instagram 앱 ID, Instagram 앱 시크릿 코드, 리디렉션 URI 및 전송받은 코드로 교체합니다. 리디렉션 URI가 이전 단계에서 지정한 URI와 정확히 일치해야 합니다(Instagram 앱을 구성할 때 앱 대시보드에서 슬래시를 추가했다면 뒤에 슬래시 포함).

예를 들면 다음과 같습니다.

curl -X POST \
  https://api.instagram.com/oauth/access_token \
  -F client_id=684477648739411 \
  -F client_secret=eb8c7... \
  -F grant_type=authorization_code \
  -F redirect_uri=https://socialsizzle.herokuapp.com/auth/ \
  -F code=AQDp3TtBQQ...

성공 시 API는 1시간 동안 유효한 단기 실행 Instagram 사용자 액세스 토큰과 Instagram 테스트 사용자 ID를 포함한 JSON 인코딩된 개체를 반환합니다.

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

다음 단계에서 사용하기 위해 액세스 토큰과 사용자 ID를 복사합니다.

6단계: 사용자 노드 쿼리

명령줄 도구 또는 앱과 아래의 cURL 요청을 사용하여 사용자 ID와 사용자 이름에 대해 사용자 노드를 쿼리합니다. {user-id}{access-token}은 위 단계에서 받은 ID와 액세스 토큰으로 교체합니다.

curl -X GET \
  'https://graph.instagram.com/{user-id}?fields=id,username&access_token={access-token}'

예를 들면 다음과 같습니다.

curl -X GET \
  'https://graph.instagram.com/17841405793187218?fields=id,username&access_token=IGQVJ...'

또는 Me 노드를 쿼리할 수도 있습니다. 여기에서 토큰을 검사하고, 토큰을 부여한 Instagram 사용자의 ID를 확인하고, 해당 사용자를 쿼리합니다. 예를 들면 다음과 같습니다.

curl -X GET \
  'https://graph.instagram.com/me?fields=id,username&access_token=IGQVJ...'

성공 시 API는 Instagram 사용자 ID와 사용자 이름을 포함하여 응답합니다.

{
  "id": "17841405793187218",
  "username": "jayposiris"
}

다음 단계

이제 토큰을 가져오고 기본 쿼리를 수행하는 방법을 알았으므로 Facebook에서 제공하는 가이드를 참조하여 API 기능에 대해 더 자세히 알아보세요.