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

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

□ 사전 준비 과정

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

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

추가하기' 를 클릭한다.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[그림7] Web 플랫폼 등록

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

[그림8] Redirect URI 등록하기

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

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

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

[그림10] Redirect URI 등록

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

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

[그림11] 접근권한 설정

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

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

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

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

(1) 인증 코드 요청

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

//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입력 부분에 입력한 후 실행한다.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

import json url="//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" : "//m.naver.com" //'자세히 보기' 버튼의 링크정보 } }) }

Toplist

최신 우편물

태그