Я работаю с Google Directory API, служебной учетной записью для oauth2 и PHP, запускаемой из командной строки.
В качестве первого шага я просто пытаюсь получить один пользовательский объект. Вот код:
require_once realpath(__DIR__ . '/../vendor/autoload.php');
session_start();
define('APPLICATION_NAME', 'Directory API PHP Quickstart');
define('SCOPES', implode(' ',
array(Google_Service_Directory::ADMIN_DIRECTORY_USER_READONLY)));
putenv('GOOGLE_APPLICATION_CREDENTIALS=/path/to/XXXXXXXX.json');
$client = new Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope(SCOPES);
$client->setSubject('[email protected]');
$httpClient = $client->authorize();
$response =
$httpClient->get('https://www.googleapis.com/admin/directory/v1/users/[email protected]');
print $response->getBody();
Вот ответ, который я получаю:
Uncaught exception 'GuzzleHttp\Exception\ClientException' with message 'Client error: `POST https://www.googleapis.com/oauth2/v4/token` resulted in a `401 Unauthorized` response:
{
"error": "unauthorized_client",
"error_description": "Unauthorized client or scope in request."}
' in /var/www/feeds/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:107
Stack trace: #0 /var/www/feeds/vendor/guzzlehttp/guzzle/src/Middleware.php(65): GuzzleHttp\Exception\RequestException::create(Object(GuzzleHttp\Psr7\Request), Object(GuzzleHttp\Psr7\Response))
#1 /var/www/feeds/vendor/guzzlehttp/promises/src/Promise.php(203): GuzzleHttp\Middleware::GuzzleHttp\{closure}(Object(GuzzleHttp\Psr7\Response))
#2 /var/www/feeds/vendor/guzzlehttp/promises/src/Promise.php(156): GuzzleHttp\Promise\Promise::callHandler(1, Object(GuzzleHttp\Psr7\Response), Array)
#3 /var/www/feeds/vendor/guzzlehttp/promises/src/TaskQueue.php(61): GuzzleHttp\Promise\Promise::GuzzleHttp\Promise\{closure}()
#4 /var/www/feeds/vendor/guzzlehttp/promis in /var/www/feeds/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php on line 107
В консоли администратора> Безопасность> Управление клиентским доступом к API я ввел идентификатор клиента со следующими областями API:
View and manage the provisioning of groups on your domain
https://www.googleapis.com/auth/admin.directory.group
View and manage the provisioning of users on your domain
https://www.googleapis.com/auth/admin.directory.user
Groups Settings
https://www.googleapis.com/auth/apps.groups.settings
Учетная запись, которую я использую для этой темы («[email protected]»), является супер-администратором домена. Общедоменное делегирование включено для учетной записи службы.
Что я здесь пропускаю? Любая помощь будет оценена.
Убедитесь, что вы включили API в консоли администратора, а также проверьте, включен ли сервис в вашем Google Project для Admin SDK.
Других решений пока нет …