From bc83923261d16160e8245690d7157056069964c7 Mon Sep 17 00:00:00 2001 From: joungmin Date: Tue, 16 Jun 2026 10:03:09 +0900 Subject: [PATCH] =?UTF-8?q?fix(map):=20NaverMap=20=EC=9D=B8=EC=A6=9D=20?= =?UTF-8?q?=ED=8C=8C=EB=9D=BC=EB=AF=B8=ED=84=B0=20ncpClientId=20=E2=86=92?= =?UTF-8?q?=20ncpKeyId?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - NCLOUD 신 정책: ncpKeyId 사용 (navermaps/maps.js.ncp 공식) - 인증 200/Failed 진짜 원인 — 도메인 등록 정확했으나 파라미터 차이 - Refs: navermaps/maps.js.ncp 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.7 --- CHANGELOG.md | 6 ++++++ frontend/src/components/NaverMapView.tsx | 3 ++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fa5fab7..3488758 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,12 @@ ## 2026-06-16 +### 🐛 NaverMap 인증 파라미터 ncpClientId → ncpKeyId (v0.1.53) +- NCLOUD 신 정책: `ncpKeyId` 사용 (옛 `ncpClientId`는 NAVER Developers용) +- 인증 200/Failed의 진짜 원인 — 도메인 등록은 정확했으나 파라미터 이름 차이로 키 인식 실패 +- 새 NCLOUD Maps Client ID(`fg01bipxbo`)로 prod 재빌드 +- 참고: https://github.com/navermaps/maps.js.ncp/blob/master/index.html + ### 🗺️ #363 메인 지도 SDK 국내(네이버)/해외(구글) 분기 (v0.1.52) - MapView를 dispatcher로 전환: 좌표가 KR bbox + NAVER_MAP_CLIENT_ID 설정 시 NaverMapView, 그 외 GoogleMapView - NaverMapView 신규 (네이버 v3 직접 wrapper, Supercluster 재사용, 마커/클러스터/flyTo) diff --git a/frontend/src/components/NaverMapView.tsx b/frontend/src/components/NaverMapView.tsx index 6259d67..33790cf 100644 --- a/frontend/src/components/NaverMapView.tsx +++ b/frontend/src/components/NaverMapView.tsx @@ -52,7 +52,8 @@ function useNaverMaps(): { ready: boolean; error: string | null } { return; } const s = document.createElement("script"); - s.src = `https://oapi.map.naver.com/openapi/v3/maps.js?ncpClientId=${NAVER_CLIENT_ID}`; + // NCLOUD 신 정책: 파라미터는 ncpKeyId (옛 ncpClientId는 NAVER Developers용). + s.src = `https://oapi.map.naver.com/openapi/v3/maps.js?ncpKeyId=${NAVER_CLIENT_ID}`; s.async = true; s.dataset.naverMaps = "1"; s.onload = () => setReady(true);