시작하기

이 문서에서는 Google Site Verification API를 사용하는 데 필요한 배경 지식을 설명합니다.

소개

Google Site Verification API는 사이트 또는 도메인의 소유권 확인 프로세스를 자동화하는 애플리케이션 또는 서비스를 작성하려는 개발자를 위한 것입니다. 이는 일부 Google 서비스를 웹사이트 또는 도메인 소유자만 사용할 수 있기 때문에 중요합니다. Google Site Verification API를 사용하면 인증된 사용자가 도메인 또는 사이트의 소유자인지 확인할 수 있습니다. 다른 Google 서비스를 프로그래매틱 방식으로 프로비저닝하는 첫 번째 단계로서,

이 문서에서는 독자가 웹 프로그래밍 개념과 웹 데이터 형식에 익숙하며 웹사이트 또는 도메인의 파일이나 DNS 레코드를 프로그래매틱 방식으로 수정할 수 있다고 가정합니다.

개요

Google Site Verification API를 사용하여 사용자의 Google 사이트 인증 데이터를 수정할 수 있습니다. 확인 데이터에 특정 웹사이트 도메인의 소유자인 것으로 표시되는 경우에만 사용자가 특정 Google 서비스에 액세스할 수 있습니다. 이 API를 사용하여 인증된 사용자를 위한 인증 토큰을 생성할 수 있습니다. 이 코드는 코드를 대신하여 웹사이트 또는 도메인 레코드에 사용자를 대신하여 삽입할 수 있습니다. 토큰이 준비되면 API를 호출하여 Google에 토큰을 확인하도록 요청합니다. Google에서 토큰을 찾으면 인증된 사용자를 웹사이트 또는 도메인의 소유자로 등록합니다. 또한 API를 사용하여 사용자 대신 소유권 목록을 수정하거나 사이트 소유권을 완전히 삭제할 수도 있습니다.

모든 API 호출은 인증된 사용자의 승인을 받아야 하며, 모든 API 호출은 인증된 사용자 계정의 컨텍스트에서 실행됩니다.

이 API를 사용할 수 있는 경우를 예로 들어 웹 호스팅 서비스를 제공한다고 가정해 보겠습니다. 사용자는 Google Search Console을 사용하여 사이트에 관한 정보를 얻기를 원합니다. 이렇게 하려면 Google에서 사용자가 실제로 소유하고 있음을 알아야 합니다. 따라서 사용자에게 사이트 소유권을 확인하도록 요청하는 인터페이스를 제공해야 합니다. 애플리케이션이 인증 데이터에 액세스할 수 있게 되면 이제 애플리케이션을 대신하여 토큰을 요청하고 사이트 구조의 파일에 배치한 후 Google에 확인해 달라고 요청하는 코드를 실행할 수 있습니다. Google에서 토큰을 찾으면 인증 데이터를 업데이트하여 사용자에게 사이트 소유권을 부여합니다. 이제 Search Console을 사용하여 원하는 정보를 얻을 수 있습니다.

시작하기 전에

Google 계정 만들기

Google 계정이 설정되어 있어야 합니다. 실수로 인한 데이터 손실을 방지하려면 개발 및 테스트 목적으로 별도의 Google 계정을 사용하는 것이 좋습니다.

사이트 인증 알아보기

Google Site Verification API 개념에 익숙하지 않은 경우 이 문서를 읽고 확인 사용자 인터페이스를 실험해 보고 코딩을 시작하기 전에 관련 도움말 문서를 읽어야 합니다.

요청 승인 방법 알아보기

애플리케이션에서 Google Site Verification API로 전송하는 모든 요청에는 승인 토큰이 포함되어야 합니다. Google은 이 토큰을 사용하여 애플리케이션을 식별합니다.

승인 프로토콜 정보

요청을 승인하려면 애플리케이션에서 OAuth 2.0을 사용해야 합니다. 다른 승인 프로토콜은 지원되지 않습니다. 애플리케이션에서 Google 계정으로 로그인을 사용하는 경우 승인의 일부 측면이 자동으로 처리됩니다.

OAuth 2.0을 사용하여 요청 승인하기

Google Site Verification API에 대한 모든 요청은 인증된 사용자의 승인을 받아야 합니다.

OAuth 2.0의 세부적인 승인 절차('흐름')는 제작 중인 애플리케이션 종류에 따라 약간씩 다릅니다. 다음의 일반적인 과정은 모든 애플리케이션 유형에 적용됩니다.

  1. 애플리케이션을 만들 때 Google API 콘솔을 사용하여 애플리케이션을 등록합니다. 이렇게 하면 Google에서 클라이언트 ID 및 클라이언트 보안 비밀과 같이 나중에 필요한 정보를 제공합니다.
  2. Google API 콘솔에서 Google Site Verification API를 활성화합니다. API 콘솔의 목록에 이 API가 없다면 이 단계를 건너뜁니다.
  3. 애플리케이션에서 사용자 데이터에 액세스해야 하는 경우 Google에 특정 액세스 범위를 요청합니다.
  4. Google에서 사용자에게 애플리케이션이 일부 데이터를 요청하도록 승인할 것인지 물어보는 동의 화면을 표시합니다.
  5. 사용자가 승인하면 Google에서 애플리케이션에 제한 시간이 있는 액세스 토큰을 제공합니다.
  6. 애플리케이션에서 액세스 토큰을 첨부하여 사용자 데이터를 요청합니다.
  7. Google에서 요청과 토큰이 유효하다고 판단하면 요청된 데이터를 반환합니다.

일부 흐름에는 새로운 액세스 토큰을 얻기 위해 갱신 토큰을 사용하는 등의 추가 단계가 포함됩니다. 다양한 유형의 애플리케이션에 적용되는 흐름을 자세히 알아보려면 Google의 OAuth 2.0 문서를 참조하세요.

다음은 Google Site Verification API에 대한 OAuth 2.0 범위 정보입니다.

범위 의미
https://www.googleapis.com/auth/siteverification 기존 확인된 사이트에 대한 전체 읽기 액세스 권한입니다. 새 사이트를 확인할 수 있습니다.
https://www.googleapis.com/auth/siteverification.verify_only 새 사이트를 인증할 수 있습니다. 기존 확인된 사이트에 대한 읽기 액세스 권한이 없습니다.

OAuth 2.0을 사용하여 액세스를 요청하려면 애플리케이션에 범위 정보와 함께 애플리케이션 등록 시 Google에서 제공하는 정보(예: 클라이언트 ID, 클라이언트 보안 비밀)가 필요합니다.

팁: Google API 클라이언트 라이브러리가 사용자를 대신하여 일부 승인 과정을 처리할 수 있습니다. 이러한 라이브러리는 다양한 프로그래밍 언어로 제공됩니다. 자세한 내용은 라이브러리 및 샘플 페이지를 참조하세요.

Google Site Verification API 배경

개념

Google Site Verification API를 사용하여 다음 유형의 웹 리소스에 대한 사용자의 소유권을 설정할 수 있습니다.

  • 도메인: 도메인 또는 하위 도메인입니다. 도메인 소유자는 해당 도메인의 모든 사이트 및 하위 도메인의 소유자로 간주됩니다. 예를 들어 bar.com의 직접 소유자도 foo.bar.com의 간접 소유자로 간주됩니다.
  • 사이트: 웹사이트의 기본 도메인 및 경로에 해당하는 URL입니다. 사이트 소유자는 사이트 내 모든 사이트의 소유자로 간주됩니다. 예를 들어 'http://www.example.com/site'의 소유자는 'http://www.example.com/site/subsite'의 소유자로 간주됩니다.

도메인 소유권은 사이트 소유권보다 더 광범위하게 적용될 수 있으므로 가능하면 도메인을 통해 확인하는 것이 좋습니다.

소유권 설정 프로세스는 애플리케이션에서 '확인 토큰'을 요청하는 것으로 시작합니다. 인증 토큰은 특수 문자열로, 웹사이트 또는 도메인에 코드를 삽입해야 합니다. 토큰이 배치되면 애플리케이션은 토큰을 확인하고 토큰이 발견되면 소유권을 기록하는 Google Site Verification API에 요청할 수 있습니다.

제한사항

보안 및 기술적 이유로 Google Site Verification API는 사용 방식에 몇 가지 제한사항을 적용합니다.

  • 인증된 사용자의 데이터 액세스 전용: 모든 작업에는 사용자 인증 및 승인이 필요합니다.
  • 인증된 사용자에게만 인증: API는 현재 인증된 계정의 사이트 또는 도메인의 소유권만 인증할 수 있습니다. 그러나 사이트의 소유권이 확인된 후에는 인증된 사용자가 다른 사용자에게 소유권을 위임할 수 있습니다. 소유권 목록이 변경될 때마다 모든 소유자에게 이메일로 알림이 전송됩니다.
  • 정규화된 URL 및 도메인 이름만 Google Site Verification API는 IDN (International Domain Name) 인코딩을 지원하지 않습니다. 필요한 경우 Punycoding을 사용하여 모든 URL, 도메인 이름, 이메일 주소 도메인을 표준 도메인 이름 문자 집합 (RFC 1034 §3.5)으로 정규화해야 합니다.

확인 방법 및 토큰

API는 별도의 인증 단계를 위한 호출을 제공합니다.

  • 확인 토큰 배치: 인증 토큰을 검색하여 인증된 사용자의 사이트에 배치하는 API 호출이 있습니다. 사용자에게 사이트가 두 개 이상 있는 경우 사이트별로 다른 토큰을 가져와야 합니다.
  • 확인 토큰이 있는지 확인: 인증된 사용자가 사이트를 소유하고 있는지 확인하기 위해 Google에서 토큰을 확인하도록 요청하는 별도의 API 호출이 있습니다.

애플리케이션에서 사용할 수 있는 웹사이트 또는 도메인을 확인하는 방법에는 여러 가지가 있습니다. 어느 방법을 선택할지는 요구사항에 가장 적합한 방법이 무엇인지에 따라 달라집니다. 토큰을 배치할 위치와 토큰 자체 유형은 선택한 인증 방법에 따라 다릅니다.

도메인 확인 방법

도메인에는 두 가지 확인 방법이 있습니다.

DNS_CNAME

애플리케이션에서 레코드 데이터의 토큰을 사용하여 소유자 도메인(도메인 등록기관을 통해 확인)의 새 CNAME 레코드를 만듭니다. 토큰은 공백으로 구분된 두 부분으로 구성됩니다. 첫 번째 부분은 새 CNAME 레코드 이름이고, 두 번째 부분은 새 CNAME 레코드 값입니다.

DNS_TXT

애플리케이션에서 레코드 데이터의 토큰을 사용하여 도메인 등록기관을 통해 소유자 도메인의 새 TXT 레코드를 만듭니다.

자세한 내용은 DNS 확인 방법에 관한 고객센터 도움말을 참고하세요.

사이트 인증 방법

다음 세 가지 인증 방법을 사이트에서 사용할 수 있습니다.

파일
애플리케이션이 소유자의 웹사이트에 토큰을 파일 형태로 배치합니다. 다음 내용으로 토큰 문자열과 일치하도록 이름이 지정된 파일을 만들어야 합니다.
google-site-verification: token

예를 들어 사용자가 http://www.example.com/ 사이트를 소유하고 있고 반환된 토큰이 google12cfc68677988bb4.html인 경우 http://www.example.com/google12cfc68677988bb4.html (사이트 최상위 수준)에 다음과 같은 내용으로 파일을 생성해야 합니다.

google-site-verification: google12cfc8677988bb4.html

자세한 내용은 파일 확인 방법에 대한 고객센터 문서를 참조하세요.

메타

애플리케이션은 소유자 사이트의 최상위 수준에 있는 기본 파일 (index.html, default.html 등)의 <head> 요소 내에 HTML <meta> 태그 형식으로 토큰을 삽입합니다. 메타 인증 토큰이 포함된 HTML 파일은 다음과 같습니다.

<html>
  <head>
    <title>Awesome Dive Sites</title>
    <meta name="google-site-verification" content="-dhsoFQadgDKJR7BsB6bc1j5yfqjUpg_b-1pFjr7o3x" />
  </head>
  <body>
    ...

자세한 내용은 메타 인증 방법에 관한 고객센터 도움말을 참고하세요.

분석

애플리케이션에서 소유자의 웹사이트에 이미 있는 기존 Google 애널리틱스 추적 코드를 사용합니다. 추적 코드가 애널리틱스 계정에 속해 있어야 하며, 스니펫이 작동하려면 HEAD 태그에 스니펫이 있어야 합니다. 자세한 내용은 애널리틱스 확인 방법에 대한 고객센터 도움말을 참조하세요.

태그 관리자

애플리케이션에서 이미 소유자의 웹사이트에 있는 기존 Google 태그 관리자 컨테이너 코드를 사용합니다. 컨테이너 코드는 태그 관리자 계정에 속해야 합니다. 자세한 내용은 태그 관리자 확인 방법에 대한 고객센터 문서를 참조하세요.

사이트 인증 사용자 인터페이스로 직접 몇 개의 사이트를 직접 확인하면 핵심 개념과 워크플로를 이해하는 데 도움이 될 수 있습니다.

데이터 모델

웹 리소스

Google Site Verification API는 REST 시맨틱 (HTTP GET, POST 등)을 웹 리소스라고 하는 항목에 적용합니다. 웹 리소스는 인증된 사용자에게 속한 웹사이트 또는 도메인입니다.

다음은 웹 리소스의 예입니다.

{
  "owners": [
    "myself@example.com",
    "another@example.com"
  ],
  "id": "http%3A%2F%2Fwww.example.com%2F",
  "site": {
    "identifier": "http://www.example.com/",
    "type": "SITE"
  }
}

id 필드는 이 웹 리소스의 고유 식별자입니다. 검색 및 수정을 위해 이 특정 웹 리소스를 참조하는 데 사용합니다. 나중에 식별자로 사용할 수 있도록 list 작업 출력의 id 필드를 저장합니다.

site 객체에는 웹 리소스의 URL 또는 도메인 이름과 리소스 유형이 포함됩니다. 사이트는 SITE 유형으로 지정되고 도메인은 INET_DOMAIN 유형으로 지정됩니다.

owners 배열은 웹 리소스의 전체 소유자 목록으로, 이메일 주소로 표시됩니다. 소유자 목록에서 이메일 주소를 추가하거나 삭제하면 인증된 사용자가 공동 소유권을 부여하거나 다른 사용자의 소유권을 취소할 수 있습니다. 사이트 또는 도메인에 자체 토큰을 설치한 다른 소유자도 공동 소유자와 함께 소유자 목록에 표시됩니다.

공동 소유권을 부여받은 사용자는 사이트에 토큰을 가진 확인된 소유자가 한 명 이상 있다면 공동 소유권을 부여할 수도 있습니다.

웹 리소스 컬렉션

웹 리소스 컬렉션은 인증된 사용자에게 속한 모든 웹 리소스의 전체 목록입니다. 새 웹 리소스를 인증된 사용자의 웹 리소스 컬렉션에 추가하려고 하면 사이트 또는 도메인의 소유권을 확인할 수 있습니다. 확인된 사이트 또는 도메인만 컬렉션에 추가됩니다.

앞서 제한사항 섹션에서 언급한 바와 같이, 인증된 사용자가 아닌 사용자에게 속한 웹 리소스는 Site Verification API를 통해 액세스할 수 없습니다.