카카오톡 rest api 메시지 전송 - kakaotog rest api mesiji jeonsong

위 프로세스는 카카오 로그인이 진행되는 과정을 간략히 표현한 프로세스다. 카카오 메세지를 발송하는 과정도 이 과정과 동일하다. 이제 위 과정에 맞춰 '나에게 기본 템플릿으로 메시지를 보내는 방법'을 소개하겠다.

□ 사전 준비 과정

위 과정을 진행하기 위해서는 먼저 'Kakao developers'에 '내 애플리케이션'을 등록하고 'Redirect URI'를 설정한 후 메세지 전송에 대한 '권한 설정'을 해야 한다. 이 과정은 다음과 같다.

(1) 'Kakao developers'(https://developers.kakao.com/) 사이트에서 '내 애플리케이션' > '애플리케이션

추가하기' 를 클릭한다.

카카오톡 rest api 메시지 전송 - kakaotog rest api mesiji jeonsong

[그림2] 애플리케이션 추가하기-1/2

(2) '애플리케이션 추가하기' 창이 오픈되면 '앱아이콘', '앱 이름', '사업자명'을 기재한다. 테스트용 앱으로

사용할 것이기 때문에 임의로 기재하면 되고 '앱 아이콘'은 선택하지 않아도 무방하다.

'저장' 버튼을 클릭하면 '내 애플리케이션'이 하나 추가된다.

카카오톡 rest api 메시지 전송 - kakaotog rest api mesiji jeonsong

[그림3] 애플리케이션 추가하기-2/2

(3) 추가된 애플리케이션의 'OWNER' 버튼을 클릭한다.

카카오톡 rest api 메시지 전송 - kakaotog rest api mesiji jeonsong

[그림4] 내 애플리케이션의 요약정보 보기

(4) 방금 생성한 애플리케이션의 '요약정보'가 보인다. 이 중 '앱 키' 항목에 있는 Key 값들이 이 후 개발에 중요하게

사용된다. 이번 예제인 '나에게 기본 템플릿으로 메시지 보내기' 에서는 'REST API 키' 값을 사용해서 개발한다.

이제 '플랫폼 설정하기' 링크를 클릭한다.

카카오톡 rest api 메시지 전송 - kakaotog rest api mesiji jeonsong

[그림5] 내 애플리케이션의 요약정보

(5) 3가지 플랫폼을 사용해서 개발을 진행할 수 있다. 이번 예제는 Web 플랫폼을 이용할 것이므로

'Web플랫폼 등록'을 선택한다.

카카오톡 rest api 메시지 전송 - kakaotog rest api mesiji jeonsong

[그림6] 선택 가능한 플랫폼

(6) 'Web 플랫폼 등록' 창에는 다수의 사이트(최대 10개) 도메인을 등록할 수 있다. 이 도메인은 메세지 발송

도메인으로 사용된다. 그러나 아직 개발되지 않은 임시 도메인을 등록해도 메세지 발송은 가능하므로 적당히

기재한다. 두번째 도메인은 여러 개가 등록될 수 있음을 보여주기 위해 등록했다.

카카오톡 rest api 메시지 전송 - kakaotog rest api mesiji jeonsong

[그림7] Web 플랫폼 등록

(7) 등록한 사이트 도메인을 "Redirect URI" 로 등록한다.

카카오톡 rest api 메시지 전송 - kakaotog rest api mesiji jeonsong

[그림8] Redirect URI 등록하기

등록 창이 뜨면 카카오 로그인의 '활성화 설정' 상태를 'ON' 으로 설정하고...

카카오톡 rest api 메시지 전송 - kakaotog rest api mesiji jeonsong

[그림9] 카카오 로그인 활성화

'Redirect URI 등록' 버튼을 클릭한 후 앞서 등록한 사이트 도메인(http://localhost:8080)을 입력하고 저장한다

카카오톡 rest api 메시지 전송 - kakaotog rest api mesiji jeonsong

[그림10] Redirect URI 등록

(8) 마지막으로 새로 등록한 '내 애플리케이션'의 '카카오톡 메시지 전송' 기능에 대한 접근 권한을 허용한다.

'설정' 버튼을 클릭한 후...

카카오톡 rest api 메시지 전송 - kakaotog rest api mesiji jeonsong

[그림11] 접근권한 설정

'이용 중 동의'나 '선택동의'를 체크하고 '동의 목적'을 입력한 후 '저장' 버튼을 클릭 한다.

카카오톡 rest api 메시지 전송 - kakaotog rest api mesiji jeonsong

[그림12] 접근권한 동의하기

□ 나에게 카카오 메세지 발송하기

위 사전 과정을 모두 마쳤다면, 이제 메세지 전송 과정을 진행한다. [그림1] '카카오 로그인 프로세스'에 설명된 프로세스를 하나씩 이행해 나간다.

(1) 인증 코드 요청

'인증 코드'는 아래 URL을 실행해서 얻는다.

https://kauth.kakao.com/oauth/authorize?client_id={REST API 키}&redirect_uri={Redirect URI}&response_type=code&scope=talk_message

· {REST API 키} 부분에는 '내 애플리케이션'의 '요약정보'에 있는 'REST API 키' 값을 입력한다.

('[그림5] 내 애플리케이션의 요약정보' 참조)

· {Redirect URI}는 상기 (7)번 단계에서 저장한 'Redirect URI' 를 입력한다. ([그림10] Redirect URI 등록'

참조)

완성된 URL은 시크릿 모드로 실행한 크롬의 url입력 부분에 입력한 후 실행한다.

카카오톡 rest api 메시지 전송 - kakaotog rest api mesiji jeonsong

[그림13] 크롬을 시크릿 모드로 실행하기

크롬 시크릿 모드에서 url 입력 부분에 완성된 URL을 입력하고 실행...

카카오톡 rest api 메시지 전송 - kakaotog rest api mesiji jeonsong

[그림14] 시크릿 모드로 실행된 크롬에 URL입력하고 실행

그러면 다음과 같이 '카카오 계정 로그인' 화면이 나타난다. 로그인을 진행한다.

카카오톡 rest api 메시지 전송 - kakaotog rest api mesiji jeonsong

[그림15] 카카오 로그인 화면

메세지 보내는 것에 동의('전체 동의하기' 선택)하고 '동의하고 계속하기' 버튼을 클릭한다. (상기 (8)번에서 접근 권한을 '이용 중 동의'로 선택하면 이와 같은 접근 권한 동의 화면이 실행된다. )

카카오톡 rest api 메시지 전송 - kakaotog rest api mesiji jeonsong

[그림16] 접근 권한 동의하기

그러면 '인증 코드'가 정상적으로 전달된다. 다만 우리가 입력한 'Redirect URI' 도메인이 실제 서비스 중인 도메인이 아니라 임의로 입력한 것이다 보니 사이트에 연결할 수 없다는 오류 화면이 뜬 것일 뿐이다. 브라우저의 URL 입력 부분을 보면 code값이 우리가 입력한 임시 도메인에 GET방식으로 전달되는 것을 알 수 있다. (만약 'Redirect URI'를 운영중인 사이트로 설정했다면 해당 사이트 초기 화면이 나타난다.)

여기서 전달되는 'code' 파라미터 값이 바로 '인증 코드' 이다.

카카오톡 rest api 메시지 전송 - kakaotog rest api mesiji jeonsong

[그림17] Redirect URI로 전달된 인증코드('code' 파라미터로 전달)

다음은 전달되는 전체 URL 정보의 예이다.

http://{Redirect URI 도메인}?code=PT3x5NCxxxxFxx2Ix-...EgLTvVzmhgMwzs03nYC6RAo9dVwAAAF-BdFccw

(2) 인증 코드로 토큰 요청(access_token 받기)

'인증 코드'를 받았으니 이제 '인증 코드'로 '토큰(access_token)'을 받아와야 한다. 이때 필요한 스크립트는 다음과 같다.(python 기준)

import requests rest_api_key = "d47b...." //내 애플리케이션의 'REST API 키' 값 code = "xxxxxxx...." //'인증 코드' 값 url="https://kauth.kakao.com/oauth/token" data = { "grant_type" : "authorization_code", "client_id" : rest_api_key, "redirect_uri" : "https://localhost.com", "code" : code } response = requests.post(url, data=data) tokens = response.json() print(tokens)

필자는 상기 코드를 'Jupyter' 로 실행 했다. 'REST API 키'값과 '인증 코드' 값을 설정한 후 실행하면 토큰('token')값(JSON 형태로 반환)이 화면에 프린트 된다. 이 중 'access_token' 값이 메세지 발송에 직접적으로 필요한 값이다.

카카오톡 rest api 메시지 전송 - kakaotog rest api mesiji jeonsong

[그림18] Jupyter로 토큰 받아오기

(3) 토큰으로 API 호출 ... 응답전달

이제 마지막으로, 전달받은 토큰('access_token')을 이용하여 나의 카카오톡에 메세지를 전달해 보자.

이때 사용되는 스크립트는 아래와 같다. 본 예제는 기본 템플릿으로 메세지를 전송하기 때문에 필수 파라미터인 'object_type', 'text', 'link'값만 전달하면 된다.

import json url="https://kapi.kakao.com/v2/api/talk/memo/default/send" headers = { "Content-Type" : "application/x-www-form-urlencoded", "Authorization" : "Bearer " + "LuVk..."//access_token 값으로 설정 } data = { "template_object" : json.dumps({ "object_type" : "text", "text" : "나의 첫번째 카카오 메세지 전송~ \n새해 복많이 받아라~", "link" : { "mobile_web_url" : "https://m.naver.com" //'자세히 보기' 버튼의 링크정보 } }) }