Kakao Developers
카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.
developers.kakao.com
카카오에서는 다양한 API들을 제공한다
내가 구현할 것은 JS+리액트로 카카오톡 공유하기 기능을 구현하기!
1. 로그인 후 내 애플리케이션을 등록해준다

2. 플랫폼에는 사이트 도메인을 넣어줌, 배포 전 테스트일 때는 localhost 링크 넣어주기!

3. 구현 방법을 선택한다

API 메소드
- 공유하기 버튼도 만들 것인지
- 내가 만들어둔 버튼에 onclick만 써서 바로 보낼것인지!
메시지 구성 방법
- 기본 메시지 (카카오톡에서 템플릿 제공해줌)
- 스크랩 메시지 : 알아서 웹페이지 스크랩 후 그 정보를 보낸다는 식인 것 같음
- 사용자 정의 메시지 : 템플릿 없이 문자 하나 딱
기본 메시지 템플릿
- 피드 : 가장 기본
- 리스트 : 피드랑 비슷한데 사진이 여러개라 생각하심.... 아닌가 암튼
- 위치 : 위치 정보 보내줌
- 커머스 : 가격 등 상품 정보
- 텍스트 : 사용자 정의 메시지랑 비슷한 듯
난 직접 만든 버튼 + 템플릿(사용자 정의 메시지인가봄!)으로 했다

내가 쓸 레퍼런스는 sendCustom()이라는 뜻!
카카오에서는 이러한 코드 예시를 제공해줌
<script src="https://t1.kakaocdn.net/kakao_js_sdk/2.6.0/kakao.min.js"
integrity="sha384-6MFdIr0zOira1CHQkedUqJVql0YtcZA1P0nbPrQYJXVJZUkTk/oX4U9GhUIs3/z8" crossorigin="anonymous"></script>
<script>
Kakao.init('c089c8172def97eb00c07217cae17495'); // 사용하려는 앱의 JavaScript 키 입력
</script>
<a id="kakaotalk-sharing-btn" href="javascript:shareMessage()">
<img src="https://developers.kakao.com/assets/img/about/logos/kakaotalksharing/kakaotalk_sharing_btn_medium.png"
alt="카카오톡 공유 보내기 버튼" />
</a>
<script>
function shareMessage() {
Kakao.Share.sendCustom({
templateId: 82775,
templateArgs: {
title: '라이언이 즐겨먹던 바로 그 틴케이스 치즈볼',
description: '바라만 봐도 즐거워지는 힐링 패키지에는 시크릿 스토리가 숨어있어요.',
},
});
}
</script>
이제 이걸 어떻게 쓰냐면 사전 작업이 필요한데
1. 카카오 SDK를 추가해준다
https://developers.kakao.com/docs/latest/ko/javascript/getting-started
Kakao Developers
카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.
developers.kakao.com
이 페이지에 SDK 설치 있음

이걸 보통 public/index.html에 추가해주곤 하는데 나는 버튼 있는 페이지에 썼음
2. 초기화

자바스크립트 키는 애플리케이션 생성할 때 같이 생기니까 그거 할당해주기!
그니까 항상 함수를 쓸 때 sdk 포함해주고 init으로 초기화 해주는 과정 후 sendDefault함수를 쓰면 되는 겁니당
코드 적용 예시
useEffect(() => {
// SDK 로드
const script = document.createElement('script');
script.src = 'https://t1.kakaocdn.net/kakao_js_sdk/2.6.0/kakao.min.js';
script.async = true;
document.body.appendChild(script);
return () => {
// 컴포넌트가 언마운트될 때 스크립트 제거
document.body.removeChild(script);
};
}, []);
const shareKakao = () => {
if (window.Kakao) {
const kakao = window.Kakao;
if (!kakao.isInitialized()) {
kakao.init('162e234250fed19646e20b80576a28af');
}
window.Kakao.Share.sendCustom({
templateId: 104264,
});
}
};
1. useEffect
index.html 파일에 직접 <script> 태그를 추가하는 방법이랑 똑같음! 둘 중 하나만 하면 됨
스크립트를 생성하고 `document.body`에 추가하여 스크립트를 로드함.
컴포넌트가 언마운트될 때 스크립트를 제거하는 코드는 메모리 누수 방지를 위해 써줌.
2. shareKakao 함수
Kakao앞에 window를 붙이지 않으면 Kakao를 못 찾는? 오류 발생
따라서 모든 Kakao 앞에 window를 붙여줌! `window.Kakao` 로 객체가 있는지 확인 후 `kakao.isInitialized()`를 사용하여 SDK가 초기화되었는지 확인하고, 초기화되지 않았다면 `kakao.init()`을 호출하여 SDK를 초기화함.
`window.Kakao.Share.sendCustom()` 메서드를 호출하여 카카오톡 공유를 실행함. templateId는 카카오에서 사용자 정의 템플릿 만들 때 부여해준 Id임.
이제 저 코드를 내가 만든 버튼이 있는 페이지에 작성 후 버튼의 onclick에 shareKakao함수를 넣어주면 기능이 정상 작동된다!
최종 코드 예시
import { KakaoBtn, PresentBtn, ResultText, ResultWrapper} from "Styles/styles";
import { useEffect } from "react";
export default function Result() {
useEffect(() => {
const script = document.createElement('script');
script.src = 'https://t1.kakaocdn.net/kakao_js_sdk/2.6.0/kakao.min.js';
script.async = true;
document.body.appendChild(script);
return () => {
document.body.removeChild(script);
};
}, []);
const shareKakao = () => {
if (window.Kakao) {
const kakao = window.Kakao;
if (!kakao.isInitialized()) {
kakao.init('162e234250fed19646e20b80576a28af');
}
window.Kakao.Share.sendCustom({
templateId: 104264,
});
}
};
return(
<ResultWrapper>
...
<KakaoBtn onClick={shareKakao}>카카오톡 공유하기</KakaoBtn>
</ResultWrapper>
);
}
이런 식으로!


잘 작동하는 것을 볼 수 있다.
웹을 배포 후 폰으로 접속시 카톡이 자동 로그인되어 있어서 바로 공유하기 창이 뜬다!
담엔 지도 쓰고싶다!
'React' 카테고리의 다른 글
[React] 리액트 context API의 리렌더링 방지를 통한 성능 최적화 하기 / useMemo 사용하기 (1) | 2024.02.18 |
---|---|
[React] 리액트 context API로 상태 관리 하기 (1) | 2024.02.17 |
[React] 리액트 파일 절대경로 설정하기 (1) | 2024.02.11 |
[React] 리액트 이벤트 프로퍼티 onClick/onSubmit 차이점 (0) | 2024.02.04 |
리액트 콘솔이 두 번 찍힐 때 (1) | 2024.02.03 |