我將Google SDK設置爲使用Google API Application Default Credentials。對於我的本地機器,創建一個憑據json文件並將其路徑設置爲GOOGLE_APPLICATION_CREDENTIALS
作爲環境變量。這是按預期工作,沒有問題。使用Google API的認證範圍錯誤不足
然而,當應用程序部署到谷歌雲VM,它引發以下錯誤:
[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 –