API каталога Google с учетной записью службы не работает

#php #google-api #google-api-client

#php #google-api #google-api-client

Вопрос:

Я использую клиентскую библиотеку Google PHP, и код не работает.

Когда я попытался добавить группу либо из OAuth 2.0 Playground, либо из https://developers.google.com/admin-sdk/directory/v1/reference/groups/insert попробуйте это раздел API работает нормально, но из кода появляется следующая ошибка:

 Error refreshing the OAuth2 token, message: '{
 "error" : "unauthorized_client",
 "error_description" : "Unauthorized client or scope in request."
}'
  

Код:

 public $scopes = array(
    //'https://www.googleapis.com/auth/admin.directory.user.readonly',
    //'https://www.googleapis.com/auth/admin.directory.group.member',
    'https://www.googleapis.com/auth/admin.directory.group',

    'https://www.googleapis.com/auth/apps.groups.settings',
    'https://www.googleapis.com/auth/admin.directory.group.member.readonly',
    'https://www.googleapis.com/auth/admin.directory.group.readonly'
);

$this->client = new Google_Client();

$this->client->setApplicationName("Test app");
$key = file_get_contents(APPPATH . $this->key_file_location);

$cred = new Google_Auth_AssertionCredentials(
    $this->email_address, $this->scopes, $key
);
$cred->sub = $this->sub;
$this->client->setAssertionCredentials($cred);
if ($this->client->getAuth()->isAccessTokenExpired()) {
    $this->client->getAuth()->refreshTokenWithAssertion($cred);
}

$this->dir = new Google_Service_Directory($this->client);
  

Мой ключ и подзаголовок верны, никаких проблем с этим при удалении https://www.googleapis.com/auth/admin.directory.group это из области действия моего кода работает нормально.