Google Maps Platform 프리미엄 플랜 URL 승인 문제 해결

Google Cloud Console에서 클라이언트 ID를 관리하는 위치

프리미엄 플랜 클라이언트 ID 관리 기능이 지원 포털에서 지도의 사용자 인증 정보 페이지 내 서비스 계정 섹션에 있는 Cloud Console로 이전됩니다.

사용자 인증 정보 페이지의 새 클라이언트 ID 영역

참고: Google Maps Platform 프리미엄 플랜은 신규 가입이 불가능하며 신규 고객에게 제공되지 않습니다.

Google Maps Platform 프리미엄 플랜 클라이언트 ID는 특별히 승인된 URL로 제한됩니다. 승인되지 않은 URL에서 클라이언트 ID를 사용하려 하면 오류 메시지가 표시됩니다.

이 문서는 이러한 문제가 발생하여 승인이 필요한 정확한 URL을 찾아야 하는 Google Maps Platform 프리미엄 플랜 고객을 대상으로 합니다.

기본 사항

제3자가 자사의 웹사이트에서 내 클라이언트 ID를 사용하지 못하도록, 내 클라이언트 ID 사용은 내가 승인해야 하는 URL 목록으로 제한됩니다. 각 URL은 단일 웹 페이지 수준으로 구체적으로 지정하거나 전체 도메인 수준으로 포괄적으로 지정할 수 있습니다.

승인된 URL 목록을 얻거나 추가 URL을 승인하려면 사용자 인증 정보 페이지로 이동한 후 클라이언트 ID 섹션으로 스크롤하세요.

URL은 한 번에 100개까지 추가할 수 있습니다. 하나의 클라이언트 ID에는 승인된 URL을 3,000개까지 연결할 수 있습니다. 애플리케이션이 3,000개가 넘는 곳에서 Google 지도 콘텐츠를 호스팅해야 한다면 API 키를 사용하도록 전환해야 합니다.

URL 승인에 대한 자세한 내용은 개발자 가이드를 참고하세요.

문제

클라이언트 ID에 대해 승인되지 않은 URL에서 실행하는 애플리케이션에서는 클라이언트 ID로 Google Maps Platform을 사용할 수 없습니다. 이러한 애플리케이션을 사용하려는 사용자는 애플리케이션에서 로드하려는 API에 따라 달라지는 오류 메시지를 받게 됩니다. 사용자는 Maps JavaScript API가 필요한 기능은 사용할 수 없습니다.

  • Maps JavaScript API에 다음 메시지가 표시됩니다.

    이 페이지에는 Google 지도 요소를 표시할 수 없습니다. 이 URL은 제공된 Google 지도 클라이언트 ID를 사용할 권한이 없습니다. 오류 코드: UnauthorizedURLForClientIdMapError

  • Maps JavaScript API v3.18 이전 버전을 사용하는 경우 다음 메시지가 표시됩니다.

    Google에서 이 애플리케이션의 Google Maps Platform 사용을 중단했습니다. 이 사이트에서는 제공된 Google Maps 클라이언트 ID를 사용할 수 없습니다. 이 애플리케이션의 소유자라면 개발자 가이드에서 URL 등록에 대한 자세한 내용을 참고하세요.

애플리케이션에서 클라이언트 ID를 제거하는 것은 올바른 수정 방법이 아닙니다*. 이렇게 하면 애플리케이션의 Google Maps Platform 프리미엄 플랜 권한이 모두 사라집니다. 즉, 다음과 같은 혜택을 상실하게 됩니다.

  • 안정적인 SLA(서비스 수준 계약)
  • 고객 지원
  • 웹 서비스 한도 증가
  • 상업적 목적의 사용 약관
  • 직장 내 인트라넷 애플리케이션 지원

따라서 내부용이거나 유료이며 올바른 Google Maps Platform 프리미엄 플랜 클라이언트 ID를 사용하지 않는 애플리케이션은 표준 Google Maps Platform 서비스 약관을 준수하지 못하게 됩니다.

해결 방법

이 문제를 해결하는 올바른 방법은 클라이언트 ID를 사용할 수 있는 적절한 URL을 찾아 승인하는 것입니다.

대부분의 경우 애플리케이션에서 클라이언트 ID를 사용할 수 있도록 승인해야 합니다. 많은 애플리케이션에서 패턴이 같은 여러 URL을 사용합니다. 예를 들어 매장 검색 기능은 example.com/stores 또는 stores.example.com에서 실행할 수 있습니다. 애플리케이션에서 사용하는 모든 URL과 일치하는 URL을 찾아야 합니다.

참고: www.example.com을 승인해도 stores.example.com 또는 example.com의 다른 하위 도메인을 승인하지는 않습니다.

승인하는 각 URL은 단일 웹 페이지 수준으로 구체적으로 지정하거나 하위 도메인을 포함한 전체 도메인 수준으로 포괄적으로 지정할 수 있습니다. 자세한 내용은 개발자 가이드를 참고하세요. 직접 관리하는 광범위한 URL 모음과 일치하는 URL을 승인하시기 바랍니다.

참고: 조직에서 해당 도메인 콘텐츠 전체를 완벽히 제어하지 않는 한 전체 도메인은 승인하지 마시기 바랍니다. 예를 들어 blogspot.com 도메인 전체를 승인하면 모든 사람이 해당 도메인에서 내 비용으로 내 클라이언트 ID를 사용할 수 있습니다. 대신 특정 블로그(예: googlegeodevelopers.blogspot.com) 또는 해당 블로그의 특정 페이지만 승인하시기 바랍니다.

올바른 URL을 찾는 방법

일반적으로는 브라우저 위치 표시줄에서 URL을 찾습니다. <iframe> 태그를 사용하지 않는 공개 웹사이트에서는 아주 쉽게 찾을 수 있습니다. 잘 모르겠다면 아래 방법을 사용하여 확인해보세요.

복잡한 애플리케이션은 사용자 위치 표시줄에 있는 URL이 아닌 다른 URL에서 Google Maps Platform을 로드하기도 합니다. <iframe> 태그가 있는 경우 또는 API를 로드하는 페이지의 URL이 서버에서 동적으로 생성된 후 브라우저로 전송되는 경우가 여기에 해당합니다. 이 경우 올바른 URL을 찾으려면 브라우저에서 Google 서버로 보내는 특정한 HTTP 요청을 조사해야 합니다.

승인해야 하는 URL은 브라우저가 API를 로드하기 위해 Google에 보내는 요청의 Referer 헤더에 포함된 URL입니다. 각 API는 다른 URL에서 로드됩니다.

maps.googleapis.com에 대한 모든 요청은 애플리케이션에서 설정된 API 로드 방식에 따라 maps.google.com 또는 maps-api-ssl.google.com으로 전송됩니다. 따라서 위의 요청은 대부분 (굵은 글꼴로 표시되는) 중요한 경로에 있습니다.

브라우저의 HTTP 헤더

위 요청의 Referer 헤더를 조사하려면 먼저 브라우저에서 헤더를 캡처해야 합니다. 모든 주요 브라우저에서 HTTP 헤더를 캡처하는 여러 도구를 무료로 제공합니다.

참고: HTTPS 트래픽을 캡처하려면 Fiddler2를 구성해야 합니다. 자세한 내용은 여기를 참고하세요.

브라우저에서 직접 HTTP 헤더를 캡처하지 못할 경우 Wireshark 같은 네트워크 프로토콜 분석기를 사용하여 HTTP 트래픽을 캡처할 수 있습니다. 이 도구는 위에서 언급한 도구보다 사용 방법이 더 복잡할 수 있습니다. 도구가 익숙하지 않다면 웹에서 몇 가지 Wireshark 튜토리얼을 찾아보세요.

원하는 도구를 선택했다면 다음 절차에 따라 승인이 필요한 URL을 찾습니다.

  1. 캡처 도구를 시작합니다. 브라우저에서 HTTP 요청을 캡처하는지 확인합니다.
  2. 클라이언트 ID를 사용하여 Google Maps Platform을 로드하지 못하는 애플리케이션을 브라우저에서 실행해 봅니다. 위에서 설명한 오류 메시지 중 하나가 표시될 것입니다.
  3. HTTP 트래픽 캡처를 중단합니다. 이렇게 하면 캡처된 트래픽을 쉽게 조사할 수 있습니다.
  4. 클라이언트 ID를 사용하여 Google Maps Platform을 로드하려는 요청을 찾습니다. 예를 들어 애플리케이션이 Maps JavaScript API를 로드하려 할 때는 다음과 같은 요청을 찾습니다.
    GET /maps/api/js?client=gme-yourclientid HTTP/1.1
  5. 줄바꿈 없이 이 줄 바로 뒤에 HTTP 요청 헤더가 이어집니다. 다음과 같은 항목을 찾습니다.
    Referer: http://www.example.com/stores/find?zip=94043
  6. 이 줄에 있는 URL이 클라이언트 ID를 사용하려면 승인이 필요한 URL입니다.

브라우저의 자바스크립트 콘솔

승인되지 않은 사이트에서 API 키 또는 클라이언트 ID를 사용하면 Maps JavaScript API에서 window.console에 오류 메시지를 작성합니다. 오류 메시지에서 올바른 URL을 찾을 수 있습니다. Console에서 다음과 같은 오류 메시지를 찾습니다.

Google Maps Platform error: UnauthorizedURLForClientIdMapError ...
Your site URL to be authorized: http://www.example.com/stores/find?zip-94043

오류 메시지를 찾는 방법에 관한 도움말은 브라우저에서 오류 확인 섹션에 있습니다.

공통 패턴 찾기

전체 애플리케이션이 클라이언트 ID를 사용하여 Google Maps Platform을 로드할 수 있게 하려면, 개발자 가이드에서 설명하는 규칙에 따라 애플리케이션에서 사용하는 모든 URL에서 공통 패턴을 찾고 이 패턴을 나타내는 URL을 승인해야 합니다.

대부분의 경우 단일 디렉터리(예: example.com/stores) 또는 하위 도메인(예: stores.example.com)처럼 단순한 형태이며, 몇 개의 URL에서 쉽게 추론할 수 있습니다.

복잡한 애플리케이션을 다룰 때는 사용자가 사용하는 여러 지도 표시 URL에서 위의 절차를 반복해야 할 수도 있습니다. 그러나 이 방법은 너무 번거로우며 불완전한 URL 집합을 유발하기도 합니다. 이러한 애플리케이션의 경우에는 개발자가 URL 패턴을 제공하는 방법이 가장 좋습니다.