[내일배움캠프 TIL] 69일차

Jaehyeon Ye·2023년 2월 2일
0

오늘 새로 배운 것

카카오톡 메시지 REST API 이용하기

카카오톡 메시지 보내기도 나에게 보내기가 있고 친구에게 보내기가 있는데 친구에게 보내기는 좀더 고려할 사항이 많아서 일단 나에게 보내기 기능부터 try해봤다.

우선 카카오톡 나에게 메시지 보내기를 하려면 먼저 선행되어야할 것들이 있다.
먼저, 동의항목에서 카카오톡 메시지 전송에 대한 접근 권한 설정을 동의해주어야하고 카카오 로그인부터 구현이 되어야한다. (친구에게 보내기는 동적으로 동의를 받고 또 여러 절차가 있어서 더 복잡하다. 아직 자세히 보진 않아서 이부분은 아직 잘 모르겠다.)또한 Redirect uri 사이트 도메인 설정이 되어있어야한다.

Redirect uri 설정은 두 군데 해줘야하는데 하나는 base uri(예: localhost:3000), 또 하나는 뒤에 연결할 path가 달린 uri(예: localhost:3000/login)이다.

로그인 구현 과정도 좀 절차가 있다. 우선 개인 REST API KEY와 Redirect URI를 통해 인가 코드를 획득하는 주소로 리다이렉트 되어야한다.

여기서 인가 코드 획득을 위한 uri 뒤에 scope를 talk_message로 지정해줘야 향후 메시지 전송을 할 때 에러가 안난다.

인가 코드를 획득하면 이 코드를 REST API KEY와 Redirect URI와 함께 post 요청을 보내 access token을 받아야한다.

이떄 access token을 획득하는 Redirect URI에서 메시지 날리는 기능을 구현해서는 안된다. access token을 획득하기 위해서 인가 코드는 재사용할 수 없는데 이 URI에서 새로고침하면 인가 코드를 재사용하게 되기 때문이다. 새로고침 전에 storage에 저장했다 하더라도 새로고침하면 결국 storage안의 access token도 undefined가 되기 때문에 무용지물이 된다.

이 access token을 storage에 저장해놓고 메시지 보낼 때 header의 authorization에 실어서 post 요청을 날려주니 정상적으로 메시지가 보내졌다.

요청 날릴 때도 정해진 구조가 있는데 일단 코드짜기 이전에 쿼리스트링(qs) 패키지를 설치해주어야했고 body에 qs.stringify() 안에 객체 형태로, 또 그 안에 정해진 속성 이름대로 담아서 날려주어야 했다.

앞으로 개선 및 시도해볼 부분

단순히 인가 코드로 access token을 획득했으면 더이상 uri에 머무르지 않게 하기 위해 빠르게 자동으로 서비스 랜딩 페이지로 redirect되는 부분을 구현할 것이다.
그리고 웹에서 간단히 메시지 날리면 모바일에서 받았을 때 받은 메시지를 열면 localhost:3000 으로 연결되기 때문에 이부분도 수정해주어야한다.
그 외에도 처음 시도하는 부분이라 아직 개선할 부분이 많은 것 같다.

이부분을 구현하는데 어느정도 숙달이 된다면 정말 많은 서비스들을 구현해볼 수 있을 것 같다. 당장 생각나는 것은 github API도 사용해서 github에 pr, merge 등의 이벤트가 발생하면 슬랙에 알림 오는 것처럼 카톡으로 알림 오도록 구현해보는 것이다. 또 기존에 만들어뒀던 todolist에도 todo 추가 시 알림이 오게 하거나 또 역으로 가능하다면 모바일 카톡에서 나에게 보내기로 메모를 해서 전송하면 웹 todolist에도 저장되게끔 해보는 것도 좋을 듯 하다.

profile
FE Developer

0개의 댓글