4

Я установил 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); 

ответ

4

Оказалось, что я должен был включить облако сферу доступа API для служб на Google Cloud Console для VM деталей экземпляра: https://console.cloud.google.com/compute/instances

К сожалению, я не мог Это не изменилось, потому что Google Cloud пока не поддерживает его. Мне пришлось запустить новый экземпляр, чтобы включить доступ к API-интерфейсу службы. https://googlecloudplatform.uservoice.com/forums/302595-compute-engine/suggestions/13101552-ability-to-change-cloud-api-access-scopes-on-launc

+0

Кажется, что с декабря 2016 года вы можете изменить области доступа на остановленных виртуальных машинах. Теперь есть ответ на эту ссылку: https://googlecloudplatform.uservoice.com/forums/302595-compute-engine/suggestions/13101552-ability-to-change-cloud-api-access-scopes-on-launc –

2

Это возможно сейчас. Ваш экземпляр должен быть остановлен, а затем он может иметь свой список изменён с консоли на странице Vm редактирования, или в SDK с помощью:

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

Просто надо знать, что с SDK путь, вторая команда будет сброшена с областями в списке. В настоящее время нет возможности добавлять только новую область.