Я установил Google SDK для использования Google API с Application Default Credentials. Для моей локальной машины создайте файл учетных данных json и укажите его путь как GOOGLE_APPLICATION_CREDENTIALS
как переменную среды. Это работает без проблем.Недостаточная ошибка проверки подлинности с использованием API Google
Однако, когда приложение развертывается в Google Cloud 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-файла, как и на локальном компьютере (который работал нормально), но он тоже не работал.
Следует отметить, что сообщение об ошибке связано с областями, но не с проблемой auth. Что делать, чтобы заставить его работать на экземпляре Compute Engine VM?
Чтобы дать клиенту код инициализации:
$client = new Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope(Google_Service_Pubsub::PUBSUB);
Кажется, что с декабря 2016 года вы можете изменить области доступа на остановленных виртуальных машинах. Теперь есть ответ на эту ссылку: https://googlecloudplatform.uservoice.com/forums/302595-compute-engine/suggestions/13101552-ability-to-change-cloud-api-access-scopes-on-launc –