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 인스턴스에서 작동하게하려면 어떻게해야합니까? 그것은 내가 VM 인스턴스 세부 사항에 대한 Google 클라우드 콘솔에서 서비스에 대한 클라우드 API 액세스 범위 수 있도록해야한다고 밝혀졌다
$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 –