App Identity Go の関数

App Identity API は、アプリケーションがアプリケーション ID(「プロジェクト ID」)を見つけられるようにします。App Engine アプリケーションは ID を使用して、そのアプリケーションの識別情報を他の App Engine アプリ、Google API、サードパーティ製アプリケーションおよびサービスに表明します。アプリケーション ID は URL やメールアドレスの生成、実行時間の決定にも使用できます。

アプリケーション ID を取得する

アプリケーション ID を調べるには、appengine.AppID 関数を使用します。

アプリケーションのホスト名を取得する

デフォルトでは、App Engine アプリは URL から http://<your_app_id>.appspot.com という形式で提供され、アプリ ID はホスト名の一部となっています。アプリがカスタム ドメインから提供される場合、ホスト名のコンポーネント全体の取得が必要となることがあります。そのためには、appengine.DefaultVersionHostname 関数を使用します。

他の App Engine アプリに ID を表明する

App Engine アプリにリクエストを行っている App Engine アプリの ID を特定するには、リクエスト ヘッダー X-Appengine-Inbound-Appid を使用します。このヘッダーは URLFetch サービスによりリクエストに追加され、ユーザーによる変更はできないため、リクエスト元のアプリケーション ID がある場合、その ID が安全に表示されます。

アプリケーション ハンドラでは、X-Appengine-Inbound-Appid ヘッダーを読み取り、リクエストを行うことを許可された ID のリストと比較することで受信 ID を確認できます。

Google API に ID を表明する

Google API では、認証および承認に OAuth 2.0 プロトコルを使用しています。App Identity API は OAuth トークンを作成できます。これを使用して、リクエストのソースがアプリケーション自体であることを表明できます。appengine.AccessToken 関数は、1 つのスコープまたはスコープのリストに対するアクセス トークンを返します。その後、このトークンを呼び出しの HTTP ヘッダーに設定して、呼び出し元アプリケーションを特定することができます。

次の例は、App Identity API を使用して Google URL Shortener API に対して REST 呼び出しを行う方法を示しています。
import (
	"net/http"

	"google.golang.org/appengine/urlfetch"

	"golang.org/x/net/context"
	"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
}

アプリケーションの ID はサービス アカウント名で表されます。通常は applicationid@appspot.gserviceaccount.com となります。正確な値を取得するには、appengine.ServiceAccount 関数を使用します。ACL を提供するサービスでは、このアカウントのアクセスを許可することでアプリケーションにアクセスを許可します。

サードパーティのサービスに ID を表明する

AccessToken によって生成されたトークンは、Google サービスでのみ有効です。ただし、基盤となる署名テクノロジーを使用してアプリケーションの ID をその他のサービスに表明できます。appengine.SignBytes 関数はアプリケーションに固有の秘密鍵を使用してバイトに署名し、appengine.PublicCertificates 関数は署名の検証に使用できる証明書を返します。

デフォルトの Cloud Storage バケット名を取得する

各アプリケーションには 1 つのデフォルトの Cloud Storage バケットがあります。このバケットには無料のストレージ容量 5 GB と I/O オペレーションの無料の割り当てが含まれます。このバケットの最大ストレージ容量は 5 GB ですが、アプリの課金を有効化して追加のストレージ分の料金を支払い、支払済みのバケットにすると、増量が可能です。

デフォルト バケットの名前を取得するには、DefaultBucketName を呼び出します。

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Go の App Engine スタンダード環境