舊版套裝組合服務的 App Identity API

區域 ID

REGION_ID 是 Google 根據您在建立應用程式時選取的地區所指派的縮寫代碼。此代碼不對應至國家/地區或省份,即使部分區域 ID 可能與常用的國家/地區和省份代碼相似。如果是 2020 年 2 月後建立的應用程式,App Engine 網址會包含 REGION_ID.r。如果是這段時間前建立的現有應用程式,網址可選擇是否包含地區 ID。

進一步瞭解區域 ID

App Identity API 可讓應用程式找到自己的應用程式 ID (也稱為專案 ID)。使用這個 ID,App Engine 應用程式就可以向其他 App Engine 應用程式、Google API 及第三方應用程式與服務宣告自己的身分。此應用程式 ID 也可用來產生網址或電子郵件地址,或是建立執行階段決策。

取得專案 ID

您可以使用 appengine.AppID 函式找出專案 ID。

取得應用程式主機名稱

根據預設,App Engine 應用程式是由 https://PROJECT_ID.REGION_ID.r.appspot.com 格式的網址提供服務,其中專案 ID 是主機名稱的一部分。如果應用程式是由自訂網域提供服務,則可能需要擷取完整的主機名稱元件。您可以使用 appengine.DefaultVersionHostname 函式來執行這項操作。

向其他 App Engine 應用程式宣告身分

針對向您的 App Engine 應用程式發出要求的 App Engine 應用程式,您可以使用要求標頭 X-Appengine-Inbound-Appid 來辨識其身分。這個標頭是由 URLFetch 服務加入要求,使用者無法修改,因此發出要求的應用程式 ID 如果存在,便能確切指出。

必要條件:

  • 只有向您應用程式的 appspot.com 網域發出的呼叫會含有 X-Appengine-Inbound-Appid 標頭。對自訂網域的呼叫不含標頭。

在應用程式處理常式中,您可以讀取 X-Appengine-Inbound-Appid 標頭並比對允許發出要求的 ID 清單,藉此檢查傳入的 ID。

向 Google API 宣告身分

Google API 使用 OAuth 2.0 通訊協定進行驗證及授權。App Identity API 可建立 OAuth 憑證,用來宣告要求來源是應用程式本身。appengine.AccessToken 函式會傳回單一範圍或列有多範圍清單的存取憑證。接著可在呼叫的 HTTP 標頭中設定這個憑證,以識別呼叫應用程式。

以下範例顯示如何使用 App Identity API 對 Google URL Shortener API 發出 REST 呼叫。
import (
	"context"
	"net/http"

	"google.golang.org/appengine/urlfetch"

	"golang.org/x/oauth2"
	"golang.org/x/oauth2/google"
	urlshortener "google.golang.org/api/urlshortener/v1"
)

// shortenURL returns a short URL which redirects to the provided url,
// using Google's urlshortener API.
func shortenURL(ctx context.Context, url string) (string, error) {
	transport := &oauth2.Transport{
		Source: google.AppEngineTokenSource(ctx, urlshortener.UrlshortenerScope),
		Base:   &urlfetch.Transport{Context: ctx},
	}
	client := &http.Client{Transport: transport}

	svc, err := urlshortener.New(client)
	if err != nil {
		return "", err
	}

	resp, err := svc.Url.Insert(&urlshortener.Url{LongUrl: url}).Do()
	if err != nil {
		return "", err
	}
	return resp.Id, nil
}

請注意,應用程式身分是以服務帳戶名稱表示,通常是「applicationid@appspot.gserviceaccount.com」。您可以使用 appengine.ServiceAccount 函式取得確切值。 對於提供 ACL 的服務,您可以透過授予這個帳戶存取權的方式來授予應用程式存取權。

向第三方服務宣告身分

AccessToken產生的權杖只適用於 Google 服務。但您可以使用基本的簽署技術,向其他服務宣告應用程式的身分。appengine.SignBytes 函式會利用應用程式專用的私密金鑰簽署位元組,而 appengine.PublicCertificates 函式會傳回可用來驗證簽名的憑證。

取得預設的 Cloud Storage 值區名稱

每個應用程式都有一個預設的 Cloud Storage 值區,其中包含 5 GB 的免費儲存空間及免費的 I/O 作業配額

如要取得預設值區的名稱,請呼叫 DefaultBucketName