프론트엔드/Next.js

[Next.js] Next.js + Typescript 환경에서 카카오 JS SDK 사용하기

순코딩 2025. 5. 8. 12:03

카카오 디벨로퍼 접속

https://developers.kakao.com/

 

Kakao Developers

카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.

developers.kakao.com

 

 

애플리케이션 생성

내 애플리케이션 > 애플리케이션 추가하기

애플리케이션 정보를 입력하고 애플리케이션을 추가합니다.

 

플랫폼 등록

생성한 애플리케이션 클릭 > 좌측 사이드바 '플랫폼' 클릭 > Web 플랫폼 등록 클릭

카카오 JS SDK를 사용할 도메인을 입력합니다.

필자는 배포 도메인, 개발 도메인을 설정 후 저장하였습니다.

 

환경변수 설정

NEXT_PUBLIC_KAKAO_SDK_KEY={애플리케이션의 JavaScript 키}
예시) NEXT_PUBLIC_KAKAO_SDK_KEY=1asdfkabse45

프로젝트 폴더에 .env 파일을 생성하여 위 애플리케이션의 JavaScript 키를 붙여넣습니다.

 

SDK 다운로드

https://developers.kakao.com/docs/latest/ko/javascript/download

 

Kakao Developers

카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.

developers.kakao.com

 

SDK 설정

src / lib / KakaoInitializer.tsx
"use client";

import Script from "next/script";

declare global {
  interface Window {
    Kakao: {
      init: (key: string) => void;
      isInitialized: () => boolean;
      Share: {
        sendScrap: (options: { requestUrl: string; templateId: number; templateArgs: Record<string, string> }) => void;
      };
    };
  }
}

export default function KakaoInitializer() {
  return (
    <Script
      src="https://t1.kakaocdn.net/kakao_js_sdk/2.7.5/kakao.min.js"
      integrity="sha384-dok87au0gKqJdxs7msEdBPNnKSRT+/mhTVzq+qOhcL464zXwvcrpjeWvyj1kCdq6"
      crossOrigin="anonymous"
      strategy="afterInteractive"
      onLoad={() => {
        window.Kakao.init(process.env.NEXT_PUBLIC_KAKAO_SDK_KEY as string);
        console.log(window.Kakao.isInitialized());
      }}
    />
  );
}

// ✨ 위 'SDK 다운로드' 과정에서 복사한 스크립트의 src와 integrity 속성을 붙여넣기하세요.

 

src / app / layout.tsx
import type { Metadata } from "next";
import KakaoInitializer from "@/lib/KakaoInitializer";

export default function RootLayout({
  children,
}: Readonly<{
  children: React.ReactNode;
}>) {
  return (
    <html lang="ko">
      <body>
        {children}
        <KakaoInitializer />
      </body>
    </html>
  );
}

 

SDK 사용(카카오톡 공유하기)

src / components / KakaoShareButton.tsx
const KakaoShareButton = () => {
  function shareMessage() {
    window.Kakao.Share.sendScrap({
      requestUrl: `${window.location.origin}`,
    });
  }
  
  return (
    <button onClick={shareMessage}>카카오톡 공유하기 버튼</button>
  );
};

export default KakaoShareButton;