프론트

React + instagram API 연동하기

척척박사또라에몽 2022. 1. 14. 18:32

회사에서 회사 홈페이지와 인스타그램 연동 업무를 주셔서 처음으로 도전하게 되었다!

기존 포스팅을 열심히 봤는데 서버를 구동해야한다는 말도 있고

라이브러리를 써도 된다고 하고,,

아주 복잡해~~~

2시간 삽질 끝에 드디어 해냈다!!!

내가 해냄!!!!!

 

일단 인스타그램 api 를 사용하기 위해서는

1. 인스타그램이 프로페셔널 계정으로 전환되어야한다.

2. 적용할 사이트가 HTTPS 사이트여야한다

 

1.  페이스북(META) 개발자 페이지에 접속 후 로그인 > 내 앱 > 앱만들기

https://developers.facebook.com/?locale=ko_KR 

 

Facebook for Developers

Messenger를 사용한 로그인 연결 정식 출시 이제 타겟 고객을 위해 더욱 심층적인 고객 관리를 지원하고 맞춤형 참여를 강화하는 방법을 알아보세요. Facebook 그래프 API v12.0 및 마케팅 API v12.0 소개

developers.facebook.com

여기서 1차로 헷갈렸던 부분이다!!!!

비즈니스로 들어가는게 아니고 "소비자" 로 들어가야함

왜냐하면 그 다음에  instagram Basic Display가 떠야하는데 비즈니스엔 안뜨기 때문임ㅡㅡ

저저저 instagram Basic Display가 나와야한다!!! graph api 가 나오면 앱을 삭제하고 다시 만드셈..

설정 누른후 -> 기본 표시 -> 앱 만들기를 하면

이런 화면이 뜬다

이제 여기서  제일 삽질하게 만든

클라이언트 OAuth 설정이 나옴

저 유효한 OAuth 리디렉션 URI 란 뭘까?

난 리액트 서버 구동해서 할건데 리액트는 로컬 서버가 http://localhost:3000 인데 이게 될까???

여기서부터 삽질이 들어갔다..

맨 처음에도 써있다시피 리다이렉션으로 https 가 들어가야한다는데 기본 로컬 서버는 http 라 방법을 찾아다녔다.

하필 또 우린 nextJS를 사용해서 그냥 package.json에 set https = true && react-script start 를 해서 되는게 아니고

따로 서버를 띄어야한다고 했다

구글신의 가호를 받으며 삽질을 한 결과

https://developers.facebook.com/docs/instagram-basic-display-api/guides/getting-access-tokens-and-permissions/

 

액세스 토큰 및 권한 받기 - Instagram 플랫폼 - 문서 - Facebook for Developers

1단계: 인증받기 인증 창에서는 앱 사용자가 앱에 권한과 단기 실행Instagram 사용자 액세스 토큰을 부여할 수 있습니다. 사용자가 로그인하고 앱에서 액세스하도록 허용할 데이터를 선택하고 나

developers.facebook.com

리디렉션 url 는 정말 아무거나 써도 된다는 사실을 발견!!

다만 그렇게 하려면 반드시 리디렉션 URI 리스트에 꼬옥 쓰고 변경 내용 저장을 해줘야해,,,,

저장을 안하고 하는바람에 여기서 또 고생함

하하

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

 

위의 url에 요구하는 값을 넣으셈

instagram-app-id는 

저거니까 이상한거 넣으면 안된다 ㅇㅅㅇ

이 과정하기 전에 사용자 토큰 생성기가 필요함

https://yangsosolife.tistory.com/30

 

[인스타그램] 토큰 생성 에러 "error_message": "Insufficient developer role"

{ "error_type": "OAuthException", "code": 400, "error_message": "Insufficient developer role" } 인스타그램 토큰 생성 중 발생한 오류입니다. Add or Remove Instagram Testers로 들어가서 인스타그램 테..

yangsosolife.tistory.com

이분의 블로그에 잘 정리되어있다!

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

 

이렇게 치고 브라우저 검색창에 보내면!!

이 화면이 떠서 허용을 하면

우리가 리디랙션 시킨 홈페이지로 간다

그러면 저 url

https://socialsizzle.herokuapp.com/auth/?code=A ....

여기 code = A...

뒤에 있는 친구들이 인증코드이다 코드 끝에 #_ 는 제외해야함

유효 시간은 1시간이니 그 후에 호다닥 해야함

 

2. 액세슨 토큰을 발급받자!

터미널을 켜서

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...

여기에 맞춰서 넣으면

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

이렇게 access_token과 user_id를 받을 수 있다

 

하지만 이것도 마찬가지로 유효기간이 1시간이다

 

https://graph.instagram.com/access_token?grant_type=ig_exchange_token&client_secret={instagram-app-secret}&access_token={access_token}

여기서 정상적으로 요청이 되었다면 

{

   "access_token": "IGeiuu489weti05B", // 이친구가 장기 액세스 토큰(long-lived-access-token)

   "token_type": "bearer",

   "expires_in": 5174488

}

이렇게 장기 액세스 토큰이 발급된다!!

장기 엑세스 토큰은 아래 url로 새로고침하여 기간 갱신할 수 있다!

http://graph.instagram.com/refresh_access_token?grant_type=ig_refresh_token&access_token={long-lived-access-token}

3. 내 인스타그램 데이터를 가져오자!!

https://graph.instagram.com/{user_id}/media?fields=id,media_type,media_url,permalink,thumbnail_url,username,caption&access_token={access_token}

여기서 

(fields=id,media_type,media_url,permalink,thumbnail_url,username,caption 부분)

id : 인스타그램 미디어 고유번호
media_type : 인스타그램 미디어 종류 (이미지 or 비디오)
media_url : 인스타그램 미디어의 주소 (이미지 주소)
permalink : 인스타그램 미디어 링크 주소 (게시물 주소)
thumbnail_url : 인스타그램 썸네일 이미지 (동영상인 경우에만) 
username : 인스타그램 사용자 이름
caption : 인스타그램 미디어 내용

 

img 태그에 media_url 을 넣으면 원하는 피드를 받아올 수 있다~~~

 

이분의 블로그를 토대로 document 잘 보면서 따라하면 된당

저분은 근데 php로 하셔서 리액트를 쓰는 사람이라면,,, 그냥 이거 보고 충분히 따라할 수 있다,,,,


 https://tonhnegod.tistory.com/245 [조용한 웹 개발자]

 

사실 이전에 instagram 테스터 추가 해줘야하는데

이거 관련 블로그는 많다,,, 위에 분 블로그에도 있으니 참고해서 하자

그럼 퇴근하러 갑니다

뿅!

'프론트' 카테고리의 다른 글

font-size : 62.5%란 뭘까  (0) 2022.01.17