Develop

[api] 인스타그램 API Access_Token 발급 방법 (Instagram API)

by hooni posted Apr 05, 2018
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

# How to get an Instagram AccessToken

인스타그램 API 토큰 발급받는 방법



인스타그램 API는 정책변동이 심해서 매뉴얼이 자주 바뀌니 이 글의 작성일을 참고해야 한다.

Instagram API의 Access Token을 가져오는 방법은 크게 두 가지가 있다.


1) 서버사이드 방식으로 가져오기 (Server-side)

  - Instagram이 제공하는 URL에 사용자 정보를 보내 code를 얻은 후,

  - 그 code 값을 사용해 다시 Instagram에 질의해 access_token을 얻는다.


2) 클라이언트 방식으로 가져오기 (Client-side)

  - Instagram이 제공하는 URL에 사용자 정보를 보내 바로 access_token을 얻는다.


예전에는 조금 더 간단한 클라이언트사이드 방식을 사용했지만 보안상 문제가 있었는지 서버사이드 방식을 추가했고 기본적으로는 서버사이드로 동작하게 되어 있다.


두 가지 방식 모두 어떻게 실행하는지 알아보자.




1. 새로운 Client를 등록

토큰을 사용하기 위해서는 클라이언트를 등록해야 한다. 등록된 각 클라이언트마다 고유의 Client ID와 Client Secret 코드를 발급받게 되고 Access-token을 생성하는 쿼리에서 이 정보를 파라미터로 사용한다.


 - https://www.instagram.com/developer 로 접속 후 Register a New Client 클릭.


step01.png




다음과 같이 각자 본인의 클라이언트 정보를 입력하되 Valid RedirectURIs 는 반드시 유효한 주소로 적어야 한다.

(토큰이 발급될 때 해당 주소로 리다이렉션 되면서 발급되기 때문이다.)


step02.png




등록이 완료되면 다음과 같이 Client ID 와 Client Secret 정보가 생성된다.


step03.png






2. Access_Token 생성

이제 해당 클라이언트의 Client ID와 Client Secret를 이용해 Access-Token을 얻기 위한 쿼리를 작성해서 실행하면 된다.

일단, 좀 더 복잡하다는(?) 서버사이드 방식부터 해보자.




2-1) 서버사이드 방식으로 가져오기

아래 URL에 조금전 얻은 본인의 Cliennt-ID와 Redirect-URI를 넣고 브라우저에서 실행한다.

https://api.instagram.com/oauth/authorize/?client_id={Client ID}&redirect_uri={Redirect URI}&response_type=code


정상적으로 실행이 완료되면 다음과 같은 인증화면이 나온다.

Authorize 버튼을 클릭하여 인증한다!!

step06.png


Authorize  버튼을 누르고 정상적으로 실행이 되면 Redirect-URI가 호출되면서 브라우저의 주소창에 code 값이 함께 표시된다.

예) https://www.hooni.net/xe/?code=4ace6244e8054d87bfcfa7b583bcc310

step04.jpg



이 code 값을 잘 메모 해둬야 한다.

Access-Token을 얻는 쿼리 구문에 파라미터로 사용되기 때문이다.


이제 터미널 창을 열어서 다음과 같이 curl 명령문을 작성한다.

초록색 값을 본인의 클라이언트 정보(Client ID, Client Secret)와 방금 생성된 code 값으로 치환하여 명령을 실행한다.


curl -F 'client_id=323f9a05904741ef89fd521f8738b18e' \
 -F 'client_secret=5bde7f12aa384de0873a1f402936833e' \
 -F 'grant_type=authorization_code' \
 -F 'redirect_uri=http://hooni.net' \
 -F 'code=4ace6244e8054d87bfcfa7b583bcc310' \
 https://api.instagram.com/oauth/access_token


정상적으로 실행되면 다음과 같은 JSON 정보가 응답으로 출력될 것이다.

결과)

{
  "access_token": "43929825.323f9a0.da59f40f9dce4286b9bf6f230c0e5a18",
  "user": {
      "id": "43929825",
      "website": "http://hooni.net",
      "profile_picture": "https://scontent.cdninstagram.com/vp/7f72290dfd10c2b150a2c5bc18ef3887/5B5C4E47/t51.2885-19/s150x150/12568260_1505560239748160_1052864547_a.jpg",
      "bio": "",
      "full_name": "hooni",
      "username": "picomax"
  }
}


실행 예)

step08.png


위의 응답 결과에서 access_token 값을 사용하면 된다.




2-2) 클라이언트사이드 방식으로 가져오기

클라이언트사이드 방식은 앞서 설명한 방식보다 훨씬 간편하고 쉽다. 따로 명령어를 작성하고 터미널에서 실행할 필요가 없이 URL을 작성해서 브라우저에서 실행하면 된다.


먼저 Manage Clients 메뉴로 들어가서 Security 탭으로 이동하여 아래의 Disable implicit OAuth 체크박스를 해제 한다.


step05.png



그리고 다음과 같이 본인의 Client ID와 Redirect URI를 이용해 URL을 만들어서 브라우저에서 실행한다.

https://api.instagram.com/oauth/authorize/?client_id={Client ID}&redirect_uri={Redirect URI}&response_type=token


정상적으로 실행이 완료되면 다음과 같은 인증화면이 나온다.

Authorize 버튼을 클릭하여 인증한다!!

step06.png


Authorize 버튼을 클릭 후 정상적으로 처리가 되면 다음과 같이 Redirect-URI로 이동되고 주소창에서 access_token 값이 함께 표시된다.


예) https://www.hooni.net/xe/#access_token=43929825.323f9a0.da59f40f9dce4286b9bf6f230c0e5a18

step07.jpg


위의 응답 결과에서 access_token 값을 사용하면 된다.


마지막으로..

Access-Token을 생성 후,

다시 위에서 해제했던 “Disable implicit OAuth” 체크박스를 다시 체크해야 한다.



[관련자료]

인스타그램에서 최신 이미지 가져오기 (Using Instagram API)

https://hooni.net/91802



[출처] https://www.instagram.com/developer/authentication/