전에 썻던 글인데
내용이 부실해서
더 추가해봄
총 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
샘플 :
인증을 완료하면 친구목록 가져오기 권한이 포함된 새로운 CODE가 발급이 됩니다. 앱스 스크립트에서 앞서 생성한 getKakaoAuth() 함수를 재실행 해 새로운 코드에 대한 액세스 토큰과 리프레쉬 토큰을 발급받습니다.
친구가 할 작업
친구의 카카오 계정 에서도 동일하게 애플리케이션의 카카오톡 메시지 전송 권한과 친구 목록에 대한 동의하는 작업을 진행합니다.
다음으로는 친구 계정으로 카카오 개발자 웹사이트에서 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}
'GCP > Apps Script' 카테고리의 다른 글
Apps Script로 카카오톡 토큰 자동 Refresh하기 (4) | 2024.12.27 |
---|---|
Apps Script로 친구에게 카카오톡 메시지 보내기 #2 (3) | 2024.12.27 |
Apps Script와 ChatGPT로 WordPress에 쿠팡 어필리에이트 글 올리기 #3 (6) | 2024.10.08 |
Apps Script와 ChatGPT로 WordPress에 쿠팡 어필리에이트 글 올리기 #2 (2) | 2024.10.04 |
Apps Script와 ChatGPT로 WordPress에 쿠팡 어필리에이트 글 올리기 #1 (4) | 2024.10.02 |