GCP/Apps Script

Apps Script로 친구에게 카카오톡 메시지 보내기 #1

whistory 2024. 12. 27. 14:52
반응형

 

 

 

 

Apps Script로 친구에게 카카오톡 메세지 보내기

내 친구 목록에 있는 친구에게 메세지를 보낼 순 없다. 사용 신청을 해서 승인을 받아 가능하다. Kakao Developers Kakao Developers 카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오

whiseung.tistory.com

 

전에 썻던 글인데

내용이 부실해서

더 추가해봄

 

총 2개의 글로 구성되며

첫번째는 친구를 추가하는 방법에 대해서 알아본다.

 

 

 

 

카카오톡에서 직접 친구를 가져오는게 아니라 애플리케이션에 친구를 등록하고 ‘친구 목록 가져오기 API’를 통해 등록한 친구의 UUID 값을 가지고 와 메시지를 보내는 방식입니다.

 

 

[작업순서]

 

애플리케이션 설정 → 친구의 권한 인증 및 사용자 인증 → 친구의 UUID값 획득 → UUID로 카카오톡 메시지 전송

친구에게 카카오톡 메시지를 보내기위한 인증절차는 아래와 같습니다.

 

 

 

 

애플리케이션 설정 (관리자)

애플리케이션에 친구 초대하기

 

[내 어플리케이션] → [앱 설정] → [팀 관리] 에서 카카오 개발자 웹사이트에 가입한 친구를 초대해 그 친구에게만 메시지를 보낼 수 있습니다. 단 그 친구가 내 계정의 카카오톡 친구추가가 되어 있어야지만 친구의 UUID를 확인할 수 있습니다.

 

 

 

동의항목 추가하기

 

[동의항목] 메뉴로 이동해 ‘카카오 서비스 내 친구목록(프로필사진, 닉네임, 즐겨찾기 포함)’ 항목을 ‘이용 중 동의’ 로 변경해줍니다.

 

 

 

인가코드 재 발급 후 액세스 토큰 재발급

 

동의항목을 새롭게 추가하였기 때문에 scope에 friends를 추가하기 위에서 진행한 ‘인가 코드, 액세스 토큰 발급’ 단계를 다시 진행합니다.

 

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

 

샘플 :

https://kauth.kakao.com/oauth/authorize?client_id=69c5a3bee53928e5aeddf2769f27abb1&redirect_uri=https://www.google.com&response_type=code&scope=talk_message,friends

 

 

 

 

인증을 완료하면 친구목록 가져오기 권한이 포함된 새로운 CODE가 발급이 됩니다. 앱스 스크립트에서 앞서 생성한 getKakaoAuth() 함수를 재실행 해 새로운 코드에 대한 액세스 토큰과 리프레쉬 토큰을 발급받습니다.

 

친구가 할 작업

친구의 카카오 계정 에서도 동일하게 애플리케이션의 카카오톡 메시지 전송 권한과 친구 목록에 대한 동의하는 작업을 진행합니다.

 

https://kauth.kakao.com/oauth/authorize?client_id=69c5a3bee53928e5aeddf2769f27abb1&redirect_uri=https://www.google.com&response_type=code&scope=talk_message,friends

 

 

 

 

다음으로는 친구 계정으로 카카오 개발자 웹사이트에서 REST API 를 한번 호출해줘야 합니다.

 

친구의 계정에서 카카오 개발자 웹사이트에 로그인 (아이디가 없는 경우 신규 가입 후 로그인) 한 뒤, [도구] - [REST API 테스트] 메뉴로 이동합니다. (https://developers.kakao.com/tool/rest-api/open/get/v2-user-me)

 

 

 

[사용자 정보 가져오기] 메뉴로 이동한 뒤, 인증 앱을 위에서 동의한 앱으로 변경합니다.

 

 

[토큰발급] 버튼을 클릭한 뒤 [전송 버튼]을 눌러 응답값의 오류가 없는지 확인합니다.

 

 

 

 

등록된 친구의 UUID 가져오기

이제 친구에게 메시지를 보내기 위한 마지막 단계입니다.

앱스 스크립트 IDE로 이동해서 등록한 친구의 UUID 정보를 가져오는 함수를 작성합니다.

 

/**
 * 카카오 개발자 친구 리스트 가져오기
 * Reference : 
 */
function getFriendList() {
   // ➊ 스프레드 시트에서 Access Token 가져오기
   const ss = SpreadsheetApp.getActive();
   const ACCESS_TOKEN = ss.getRangeByName("ACCESS_TOKEN").getValue();
   // ➋ 카카오톡 친구 리스트 API URL
   const url = "<https://kapi.kakao.com/v1/api/talk/friends>";   
   // ➌ URL을 호출을 위한 환경설정
   const options = {
      method: "GET",
      muteHttpExceptions: true,
      headers: { 
         Authorization: "Bearer " + ACCESS_TOKEN
      }
   };
   // ➍ URL을 환경설정 값과 함께 호출 
   const res = UrlFetchApp.fetch(url, options).getContentText();
   console.log(res);
   const resJson = JSON.parse(res);
   const datas = resJson.elements;
   console.log(datas);
}

 

➊ 스프레드 시트에서 Access Token을 가져옵니다. “ACCESS_TOKEN” 라고 설정한 범위이름의 데이터를 가져오기 위해 getRangeByName() 메서드를 이용합니다. 

 

➋ 카카오 친구 목록을 가져오는  API URL을 선언해줍니다. 

 

➌ URL을 호출을 위한 환경을 설정합니다. “method”에는 “GET” 을 넣어줍니다. headers의 “Authorization”에는 인증처리 방식인 Bearer와 함께 애플리케이션의 REST API 키(변수 CLIENT_ID)를 넣어주고, “contentType”에는 “application/x-www-form-urlencoded;charset=utf-8” 를 넣어줍니다. 

 

➍ URL을 환경설정 값과 함께 호출합니다.

 

코드를 저장한 다음 getFriendList( ) 함수를 실행하면 REST API 테스트까지 완료한 친구의 목록이 콘솔에 출력됩니다. 로그에서 메시지를 보내고 싶은 친구의 uuid값을 저장해둡니다.

 

 

친구가 1명 등록 경우

{"elements":[{"profile_nickname":"친구이름","profile_thumbnail_image":"<https://p.kakaocdn.net/th/talkp/wlfFZiFJ00/IKPJbXt30tAcAofG3USTWK/dgu7t1_110x110_c.jpg","allowed_msg":true,"id":3243543502,"uuid":"uoO7g7CAuYmwnK6dpZWgmK6arYGwgLGFto--2A","favorite":false}],"total_count":1,"after_url":null,"favorite_count>":0}

 

친구가 여려명 등록된 경우

{"elements":[{"profile_nickname":"친구1","profile_thumbnail_image":"<https://p.kakaocdn.net/th/talkp/wouq1yuESW/xz4mtVfmpYvQEwqZZBgIA0/66wzsy_110x110_c.jpg","allowed_msg":true,"id":3246338305,"uuid":"1O3e6dnu2uzU-Mr7zP3K-8n7yubf7tbk3epj","favorite":false},{"profile_nickname":"친구2","profile_thumbnail_image":"https://p.kakaocdn.net/th/talkp/wnSRbKOVav/0J1Vwuqk31wHdWLaaAduv0/lg8aqp_110x110_c.jpg","allowed_msg":true,"id":2816747478,"uuid":"1ObU4dHk0OTI8MPzyvzN-dXs3eXX7tm1","favorite":false},{"profile_nickname":"친구3","profile_thumbnail_image":"https://p.kakaocdn.net/th/talkp/wlfFZiFJ00/IKPJbXt30tAcAofG3USTWK/dgu7t1_110x110_c.jpg","allowed_msg":true,"id":2815343649,"uuid":"1O3V7d7u1-fe8sDzy_vO9sD0w-_W59_t1ONp","favorite":false}],"total_count":3,"after_url":null,"favorite_count>":0}

 

사용자 계정에서 ‘친구목록’ 동의항목을 추가하지 않은경우

{"msg":"[Apps Script 테스트] App disabled [friends] scopes for [FRIENDS] API on developers.kakao.com. Enable it first.","code":-3}

 

등록된 친구가 없거나 친구가  인증과정이 완료되지 않은경우

{"elements":[],"total_count":0,"after_url":null,"favorite_count":0}

 

 

 

 

 

 

Apps Script로 친구에게 카카오톡 메시지 보내기 #2

친구에게 메시지 보내기앞서 획득한 친구의 UUID를 이용해 친구에게 카카오톡 메시지를 전송하는 코드를 작성해보겠습니다. /** * 친구에게 카카오톡 메시지 보내기 * Reference : */function sendMessageTo

whiseung.tistory.com

 

반응형