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

$client = new Google_Client(); 
$client->useApplicationDefaultCredentials(); 
$client->addScope(Google_Service_Pubsub::PUBSUB); 

답변

4

: 불행하게도 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 년 12 월 현재 정지 된 VM의 액세스 범위를 변경할 수 있습니다. 이 링크에 대한 답글이 있습니다. 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의 방식에 그, 두 번째 명령은 목록의 범위로 재설정됩니다. 현재 새 범위 만 추가 할 수있는 기능은 현재 제공되지 않습니다.