App Identity API 可讓應用程式找到自己的應用程式 ID (也稱為專案 ID)。使用這個 ID,App Engine 應用程式就可以向其他 App Engine 應用程式、Google API 及第三方應用程式與服務宣告自己的身分。此應用程式 ID 也可用來產生網址或電子郵件地址,或是建立執行階段決策。
取得專案 ID
您可以使用 app_identity.get_application_id()
方法找出應用程式 ID。WSGI 或 CGI 環境會公開一些由 API 處理的實作詳情。
取得應用程式主機名稱
根據預設,App Engine 應用程式是由 http://<your_app_id>.appspot.com
格式的網址提供服務,其中應用程式 ID 是主機名稱的一部分。如果應用程式是由自訂網域提供服務,則可能需要擷取完整的主機名稱元件。您可以使用 app_identity.get_default_version_hostname()
方法來執行這項作業。
向其他 App Engine 應用程式宣告身分
針對向您的 App Engine 應用程式發出要求的 App Engine 應用程式,您可以使用要求標頭 X-Appengine-Inbound-Appid
來辨識其身分。這個標頭是由 URLFetch 服務加入要求,使用者無法修改,因此發出要求的應用程式 ID 如果存在,便能確切指出。
必要條件:
- 只有向您應用程式
appspot.com
網域發出的呼叫會含有X-Appengine-Inbound-Appid
標頭。對自訂網域的呼叫不含標頭。 - 必須將要求設定為不追蹤重新導向。將
urlfetch.fetch()
follow_redirects
參數設為False
。
在應用程式處理常式中,您可以讀取 X-Appengine-Inbound-Appid
標頭並比對允許發出要求的 ID 清單,藉此檢查傳入的 ID。例如:
向 Google API 宣告身分
Google API 使用 OAuth 2.0 通訊協定進行驗證及授權。App Identity API 可建立 OAuth 憑證,用來宣告要求來源是應用程式本身。get_access_token()
方法會傳回單一範圍或列有多範圍清單的存取憑證。接著可在呼叫的 HTTP 標頭中設定這個憑證,以識別呼叫應用程式。
請注意,應用程式的身分是以服務帳戶名稱表示,通常為「applicationid@appspot.gserviceaccount.com」。您可以使用 get_service_account_name()
方法取得確切的值。對於提供 ACL 的服務,您可以透過授予這個帳戶存取權的方式,以授予應用程式存取權。
向第三方服務宣告身分
get_access_token()
產生的憑證只適用於 Google 服務。但您可以使用基本的簽署技術,向其他服務宣告應用程式的身分。sign_blob()
方法會利用應用程式專用的私密金鑰簽署位元組,而 get_public_certificates()
方法會傳回可用來驗證簽名的憑證。
取得預設的 Cloud Storage 值區名稱
每個應用程式都有一個預設的 Cloud Storage 值區,其中包含 5GB 的免費儲存空間及免費的 I/O 作業配額。這個值區的儲存空間上限為 5 GB;如要增加儲存空間,可以為您的應用程式啟用記費功能,並支付額外儲存空間的費用,讓這個值區成為付費值區。
如要取得預設值區的名稱,您可以使用 App Identity API。請呼叫 google.appengine.api.app_identity.app_identity.get_default_gcs_bucket_name。