리전 ID
REGION_ID는 앱을 만들 때 선택한 리전을 기준으로 Google에서 할당하는 축약된 코드입니다. 일부 리전 ID는 일반적으로 사용되는 국가 및 주/도 코드와 비슷하게 표시될 수 있지만 코드는 국가 또는 주/도와 일치하지 않습니다. 2020년 2월 이후에 생성된 앱의 경우 REGION_ID.r이 App Engine URL에 포함됩니다. 이 날짜 이전에 만든 기존 앱의 경우 URL에서 리전 ID는 선택사항입니다.
리전 ID에 대해 자세히 알아보세요.
App Identity API를 사용하면 애플리케이션이 스스로의 애플리케이션 ID(다른 명칭은 프로젝트 ID)를 확인할 수 있습니다. App Engine 애플리케이션은 이 ID를 사용하여 다른 App Engine 앱, Google API, 서드 파티 애플리케이션 및 서비스에 자신의 ID를 알릴 수 있습니다. 애플리케이션 ID는 URL 또는 이메일 주소를 생성하거나 런타임을 결정하는 데 사용될 수도 있습니다.
프로젝트 ID 가져오기
다음을 이용하여 프로젝트 ID를 확인할 수 있습니다.
AppIdentityService::getApplicationId() 메서드.
애플리케이션 호스트 이름 가져오기
기본적으로 App Engine 앱은 https://PROJECT_ID.REGION_ID.r.appspot.com 형식의 URL에서 제공되며, 여기서 프로젝트 ID는 호스트 이름의 일부입니다.
앱이 커스텀 도메인에서 제공될 때는 전체 호스트 이름 구성요소를 검색해야 할 수 있습니다.
AppIdentityService::getDefaultVersionHostname() 메서드.
다른 App Engine 앱에 ID 알림
App Engine 앱에 요청하는 App Engine 앱의 ID를 확인하려면 요청 헤더 X-Appengine-Inbound-Appid를 사용하면 됩니다. 이 헤더는 URLFetch 서비스를 통해 요청에 추가되며 사용자가 수정할 수 없으므로 이 헤더가 있으면 요청하는 애플리케이션의 프로젝트 ID라고 신뢰할 수 있습니다.
요구사항:
앱의
appspot.com도메인에 대한 호출에만X-Appengine-Inbound-Appid헤더가 포함됩니다. 커스텀 도메인에 대한 호출은 헤더를 포함하지 않습니다.리디렉션을 따르지 않도록 요청을 설정해야 합니다.
애플리케이션 핸들러에서 X-Appengine-Inbound-Appid 헤더를 읽고 요청을 실행할 수 있는 ID 목록과 비교하여 수신 ID를 확인할 수 있습니다.
Google API에 ID 알림
Google API는 인증 및 승인에 OAuth 2.0 프로토콜을 사용합니다. App Identity API는 애플리케이션 자체에서 요청을 보냈음을 알리는 데 사용 가능한 OAuth 토큰을 만들 수 있습니다.
getAccessToken() 메서드
는 특정 범위 또는 범위 목록의 액세스 토큰을 반환합니다. 이 토큰을 호출의 HTTP 헤더에 설정하면 호출하는 애플리케이션을 식별할 수 있습니다.
다음 예시는 App Identity API를 사용하여 OAuth를 사용하는 Google 캘린더 연락처를 검색하는 방법을 보여줍니다.
// Retrieves Google Calendar contacts using OAuth use Google\AppEngine\Api\AppIdentity\AppIdentityService; function setAuthHeader() { $access_token = AppIdentityService::getAccessToken('https://www.google.com/m8/feeds'); return [sprintf('Authorization: OAuth %s', $access_token['access_token'])]; } $get_contacts_url = 'https://www.google.com/m8/feeds/contacts/default/full'; $headers = setAuthHeader(); $opts = [ 'http' => [ 'header' => implode("\r\n", $headers), ], ]; $context = stream_context_create($opts); $response = file_get_contents($get_contacts_url, false, $context); $xml = simplexml_load_string($response); $email = $xml->author->email; $service_account = AppIdentityService::getServiceAccountName(); if (strcmp($email, $service_account) != 0) { die(sprintf('%s does not match the service account name %s.', $email, $service_account)); }
애플리케이션의 ID는 서비스 계정 이름(일반적으로 applicationid@appspot.gserviceaccount.com)으로 표시됩니다.
getServiceAccountName() 메서드
를 사용하여 정확한 값을 가져올 수 있습니다. ACL을 제공하는 서비스의 경우 이 계정 액세스 권한을 부여하여 애플리케이션 액세스 권한을 부여할 수 있습니다.
서드 파티 서비스에 ID 알림
getAccessToken() 메서드
로 생성되는 토큰은 Google 서비스에서만 작동합니다.
그러나 내부적인 서명 기술을 사용하면 다른 서비스에 애플리케이션의 ID를 알릴 수 있습니다.
signForApp() 메서드
는 애플리케이션에 고유한 비공개 키를 사용하여 바이트에 서명하고
getPublicCertificates() 메서드
는 서명을 검증하는 데 사용할 수 있는 인증서를 반환합니다.
기본 Cloud Storage 버킷 이름 가져오기
각 애플리케이션은 무료 저장용량 5GB 및 무료 I/O 작업 할당량을 포함하는 기본 Cloud Storage 버킷 하나를 보유할 수 있습니다.
기본 버킷의 이름을 가져오려면 App Identity API를 사용하면 됩니다.
CloudStorageTools::getDefaultGoogleStorageBucketName 호출. 또는 기본 버킷의 이름으로 #default# 값을 사용할 수 있습니다. 여기서 #default#는 런타임 시 자동으로 애플리케이션의 기본 버킷 이름
으로 교체됩니다.