해결된 질문
작성
·
62
0
선생님, 안녕하세요.
Next.js 프로젝트에 카카오톡 공유 API를 연동하는 과정에서 지속적으로 'SDK error'가 발생하여 질문드립니다. 제가 이해하고 적용한 방식이 올바른지 검토가 가능하시다면 답변 부탁드립니다.!
민감한 정보인 카카오 JavaScript 키를 안전하게 관리하기 위해 .env.local
파일을 사용하고 있습니다.
Next.js 환경의 특성상, 클라이언트 사이드(브라우저)에서 해당 키를 사용해야 하므로 환경 변수 이름에 아래와 같이 저장하는 것이 올바른 방법인지 궁금합니다.
.env.local
NEXT_PUBLIC_KAKAO_JAVASCRIPT_KEY="여기에_발급받은_자바스크립트_키"
카카오 개발자 가이드를 참고하여 아래와 같은 순서로 SDK 연동 및 초기화를 진행했습니다.
이 과정이 올바른지 확인하고 싶습니다.
웹 페이지에 아래 스크립트 태그를 추가하여 JavaScript SDK를 불러왔습니다. ${VERSION}
과 ${INTEGRITY_VALUE}
는 카카오 개발자 사이트에서 제공하는 최신 값으로 적용했습니다.
HTML
<script src="https://t1.kakaocdn.net/kakao_js_sdk/${VERSION}/kakao.min.js"
integrity="${INTEGRITY_VALUE}" crossorigin="anonymous"></script>
불러온 SDK를 초기화하기 위해 Kakao.init()
함수를 호출했습니다. 이때, 인자 값으로 .env.local
에 저장한 process.env.NEXT_PUBLIC_KAKAO_JAVASCRIPT_KEY
를 사용했습니다.
JavaScript
// SDK를 초기화합니다.
Kakao.init(process.env.NEXT_PUBLIC_KAKAO_JAVASCRIPT_KEY);
// SDK 초기화 여부를 콘솔에 출력하여 확인합니다.
console.log(Kakao.isInitialized());
최종적으로 아래와 같은 구조로 코드를 작성하여 초기화를 시도하고 있습니다.
HTML
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Kakao JavaScript SDK</title>
<script src="https://t1.kakaocdn.net/kakao_js_sdk/v1/kakao.min.js"
integrity="sha384-..." crossorigin="anonymous"></script>
<script>
// 2. SDK 초기화
// 실제로는 Next.js 환경 변수를 사용합니다.
Kakao.init('YOUR_JAVASCRIPT_KEY');
// 초기화 여부 확인
console.log(Kakao.isInitialized());
</script>
</head>
<body>
...
</body>
</html>
Next.js 프로젝트에서 카카오 JavaScript 키를 .env.local
파일에서 관리하는 방식이 올바른가요?
script
태그로 SDK를 로드한 후, Kakao.init()
함수에 환경 변수 값을 넣어 초기화하는 현재의 구현 방식이 정확한가요?
만약 위 과정에 문제가 없다면, 'SDK error'가 발생할 수 있는 다른 일반적인 원인(예: 카카오 개발자 사이트의 플랫폼 도메인 설정 오류, 앱 키 오타 등)은 무엇이 있을까요?
바쁘시겠지만 시간 나실 때 확인 부탁드립니다. 감사합니다!
답변 1
1
안녕하세요? 답변드립니다!
우선, .env.local 파일을 이용해서 관리해주시는 것은 올바른 방법입니다. 물론 배포하실때는 환경변수로 해당 키를 추가해 주시는 것만 잊지 않으시면 됩니다.
그런데, Next.js를 사용하고 있기 때문에 카카오에서 제공하는 pure Javascript 예제와는 초기화를 구현하는 방식이 조금 달라져야 합니다.
Next.js 14 버전에서 어떻게 하면 좋은지 예시를 찾아 공유해 드립니다. 이 블로그를 참고하셔서 리액트 컴포넌트 형식으로 구현해 보시면 좋을 것 같습니다!
선생님 감사드립니다. 덕분에 구현이 잘 되요!