Application Default CredentialsでGoogle APIを使用するようにGoogle SDKをセットアップしました。私のローカルマシンでは、資格jsonファイルを作成し、パスを環境変数としてGOOGLE_APPLICATION_CREDENTIALS
に設定します。これは問題なく期待どおりに動作します。アプリはGoogleクラウドVMに展開されたときにGoogle APIを使用した認証スコープのエラーが不十分です
はしかし、それは次のようなエラーがスローされます。
[Google_Service_Exception]
{
"error": {
"code": 403,
"message": "Request had insufficient authentication scopes.",
"errors": [
{
"message": "Request had insufficient authentication scopes.",
"domain": "global",
"reason": "forbidden"
}
],
"status": "PERMISSION_DENIED"
}
}
documentationによると、組み込みのサービスアカウントには、仮想マシン・インスタンスに関連付けられている必要があります。それを動作させるために、資格のjsonファイルを使用しようとしましたが、これはローカルマシン(これはうまくいきました)でもやっていましたが、どちらもうまくいきませんでした。
エラーメッセージはスコープに関するものであり、認証に関する問題ではありません。 Compute Engine VMインスタンスで動作させるにはどうすればよいですか?クライアントの初期化コード与えること
:
$client = new Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope(Google_Service_Pubsub::PUBSUB);
2016年12月現在、停止したVMのアクセス範囲を変更できるようです。このリンクの返信があります:https://googlecloudplatform.uservoice.com/forums/302595-compute-engine/suggestions/13101552-ability-to-change-cloud-api-access-scopes-on-launc –