403 Ошибка при вызове Google Admin SDK

Я пытаюсь составить список пользователей в моем домене google, используя PHP-библиотеку Admin SDK. Однако я получаю 403 пользователей, когда пытаюсь составить список своих пользователей. Это то что я пробовал

$client = new Google_Client();
$client->setApplicationName("My Application");
$credential = new Google_Auth_AssertionCredentials(
$serviceAccount,
array('https://www.googleapis.com/auth/admin.directory.user'),
$privateKey,
'notasecret',
'http://oauth.net/grant_type/jwt/1.0/bearer'
);

$client->setAssertionCredentials($credential);
if($client->getAuth()->isAccessTokenExpired())
{
$client->getAuth()->refreshTokenWithAssertion($credential);
}

$service = new Google_Service_Directory($client);

$optParams = array('domain' => 'mydomain');
$results = $service->users->listUsers($optParams);

Но я получаю эту ошибку 403

Error calling GET https://www.googleapis.com/admin/directory/v1/users?domain=mydomain: (403) Not Authorized to access this resource/api

Как предлагалось в других аналогичных постах, я также попытался включить делегированного администратора, как показано ниже

$credential                = new Google_Auth_AssertionCredentials(
$serviceAccount,,
array('https://www.googleapis.com/auth/admin.directory.user'),
$privateKey,
'notasecret',
'http://oauth.net/grant_type/jwt/1.0/bearer',
'[email protected]'
);

Но это дало следующую ошибку на refreshTokenWithAssertion ($ credential)

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

Я проверил учетную запись службы, а также включил API в консоли проекта. Может кто-нибудь выяснить, что я делаю неправильно? Пожалуйста помоги. Я немного разбираюсь в этом.

2

Решение

Я нашел решение для этой ошибки. Я добавил ‘sub’ в Google_Auth_AssertionCredentials, как показано ниже, и добавил идентификатор клиента и область действия по адресу admin.google.com-> Безопасность-> Управление доступом к API и авторизовал его.

это

$credential                = new Google_Auth_AssertionCredentials(
$serviceAccount,,
array('https://www.googleapis.com/auth/admin.directory.user'),
$privateKey,
'notasecret',
'http://oauth.net/grant_type/jwt/1.0/bearer',
'[email protected]', false
);

плюс авторизация на admin.google.com-> Безопасность-> Управление доступом к API решила проблему. Почему мне пришлось авторизоваться — это другой вопрос.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]