аутентификация — Google Directory API (PHP-клиент) — ошибка 401 Требуется вход в систему

Я пытаюсь добавить пользователя, используя сервисную учетную запись, и постоянно получаю сообщение об ошибке «401 Login Required».
Я уже поставил p12-ключ на сервер и добавил разрешение Service Account / Scope в Admin Console.
Я сделал реализацию с обычной аутентификацией, но получил ту же проблему.

<?php
session_start();
set_include_path($_SERVER['DOCUMENT_ROOT'].'/src/php/');
require_once ('Google/Client.php');

$scope = 'https://www.googleapis.com/auth/admin.directory.user';
$client_id = 'xxxxx.apps.googleusercontent.com'; //Client ID
$service_account_name = '[email protected]'; //Email Address
$key_file_location = 'key.p12'; //key.p12

$client = new Google_Client();
$client->setApplicationName("test product");

if (isset($_SESSION['service_token']))
{
$client->setAccessToken($_SESSION['service_token']);
}

$key = file_get_contents($key_file_location);
$cred = new Google_Auth_AssertionCredentials
(
$service_account_name,
array($scope),
$key
);
$client->setAssertionCredentials($cred);

if($client->getAuth()->isAccessTokenExpired())
{
$client->getAuth()->refreshTokenWithAssertion($cred);
}
$_SESSION['service_token'] = $client->getAccessToken();

if($client->getAccessToken())
{
$requestUrl = 'https://www.googleapis.com/admin/directory/v1/users';
$requestMethod = 'POST';
$requestHeader = array('Content-Type' => 'application/json', 'Content-Length' => 'CONTENT_LENGTH');
$postBody ='{
"primaryEmail": "[email protected]",
"name": {
"givenName": "user_name",
"familyName": "user_familyName"},
"suspended": false,
"password": "passpass",
"ims": [
{
"type": "work",
"protocol": "gtalk",
"im": "[email protected]",
"primary": true
}
]
}';

$request = new Google_Http_Request($requestUrl , $requestMethod,  $requestHeader, $postBody);
$result = $client->execute($request);

print_r($result);
}
?>

ошибка

Uncaught exception 'Google_Service_Exception' with message 'Error calling POST https://www.googleapis.com/admin/directory/v1/users: (401) Login Required' in /home/u538421519/public_html/src/php/Google/Http/REST.php:79 Stack trace:
#0 /home/u538421519/public_html/src/php/Google/Http/REST.php(44): Google_Http_REST::decodeHttpResponse(Object(Google_Http_Request))
#1 /home/u538421519/public_html/src/php/Google/Client.php(556): Google_Http_REST::execute(Object(Google_Client), Object(Google_Http_Request))
#2 /home/u538421519/public_html/index.php(58): Google_Client->execute(Object(Google_Http_Request))
#3 {main} thrown in /home/u538421519/public_html/src/php/Google/Http/REST.php on line 79

0

Решение

Запрос отправлен без токена:

$request = new Google_Http_Request($requestUrl , $requestMethod,  $requestHeader, $postBody);
$result = $client->execute($request);

Запрос отправлен с токеном:

$request = new Google_Http_Request($requestUrl , $requestMethod,  $requestHeader, $postBody);
$result = $client->getAuth()->authenticatedRequest($request);
2

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

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

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