2016-12-08 1 views
1

default credentials을 사용하는 그룹에 대한 정보를 얻으려고합니다. 내 코드기본 자격 정보가있는 Google_Service_Directory -이 리소스/api에 액세스하는 데 권한이 부여되지 않음 (403)

 putenv('GOOGLE_APPLICATION_CREDENTIALS=' . XXX_SSO_SERVICE_ACCOUNT_CREDENTIALS_JSON); 
     $service_account_client = new \Google_Client(); 

     $service_account_client->useApplicationDefaultCredentials(); 

     $service_account_client->setScopes([ 
      \Google_Service_Directory::ADMIN_DIRECTORY_GROUP_READONLY, 
      \Google_Service_Directory::ADMIN_DIRECTORY_GROUP_MEMBER_READONLY, 
      \Google_Service_Directory::ADMIN_DIRECTORY_USER_READONLY, 
     ]); 

     $groups_service = new \Google_Service_Directory($service_account_client); 
     $groups = $groups_service->groups->listGroups([ 
      'userKey' => '[email protected]', 
      'domain' => 'xxx.com' 
     ]); 

내가 점점 계속되는 오류 "아니이 리소스/API에 액세스 할 수있는 권한"나는 G 스위트 관리 콘솔에 액세스 할 수도 없어하지만 난 perimissions이라는 것을 들었다

을 올바르게 설정하십시오.

나는 또한 user to impersonate

$service_account_client = new \Google_Client(['subject'=> '[email protected]']); 

의 이메일을 추가하려고했습니다하지만 난 여전히 같은 오류가 발생합니다.

답변

1

내 경우 admin 사용자는 [email protected]이 아니고 다른 이메일입니다. 올바른 답은 여기에서 사용하는 것입니다.

putenv('GOOGLE_APPLICATION_CREDENTIALS=' . XXX_SSO_SERVICE_ACCOUNT_CREDENTIALS_JSON); 
    $service_account_client = new \Google_Client(['subject'=> '[email protected]']);// Set the mail of an admin of G Suite 

    $service_account_client->useApplicationDefaultCredentials(); 

    $service_account_client->setScopes([ 
     \Google_Service_Directory::ADMIN_DIRECTORY_GROUP_READONLY, 
     \Google_Service_Directory::ADMIN_DIRECTORY_GROUP_MEMBER_READONLY, 
     \Google_Service_Directory::ADMIN_DIRECTORY_USER_READONLY, 
    ]); 

    $groups_service = new \Google_Service_Directory($service_account_client); 
    $groups = $groups_service->groups->listGroups([ 
     'userKey' => '[email protected]', 
     'domain' => 'xxx.com' 
    ]);