4

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); 

答えて

4

は、それは私がVMインスタンスの詳細については、Googleクラウドコンソール上のサービスのためのクラウドAPIのアクセス範囲を可能にするために持っていたことが判明:残念ながらhttps://console.cloud.google.com/compute/instances

、私はcouldn Google Cloudが今のところそれをサポートしていないため変更されていません。私は、サービスAPIアクセスを可能にするために新しいインスタンスを開始しなければならなかった。 https://googlecloudplatform.uservoice.com/forums/302595-compute-engine/suggestions/13101552-ability-to-change-cloud-api-access-scopes-on-launc

+0

2016年12月現在、停止したVMのアクセス範囲を変更できるようです。このリンクの返信があります:https://googlecloudplatform.uservoice.com/forums/302595-compute-engine/suggestions/13101552-ability-to-change-cloud-api-access-scopes-on-launc –

2

今は可能です。 、

gcloud compute instances stop [vmname] gcloud beta compute instances set-scopes [vmname] --scopes="[scopes list]"

をジャストSDKの道であることに注意してください:あなたのインスタンスは、を停止しなければならないし、それは、その範囲のリストが編集VMのページで、またはSDKで使用してコンソールから変更することができ2番目のコマンドはリスト内のスコープでリセットされます。現在、新しいスコープを追加するだけの機能はありません。

関連する問題