Ошибка с учетной записью сервиса Google API

Я пытаюсь получить доступ к Google API для моего домена с помощью учетной записи службы. Это мой урок https://developers.google.com/accounts/docs/OAuth2ServiceAccount

Первый: я захожу на «console.developers.google.com» и создаю новый проект. Я добавил календарь API в свой проект. После этого я создаю учетные данные OAuth «Сервисный аккаунт». Я использую этот ключ и создаю и access_token с ролью «https://www.googleapis.com/auth/calendarMsgstr «Я получил access_token успешно.

Во-вторых, я захожу на «admin.google.com» и перехожу к управлению доступом клиентов API. Я добавил свой идентификатор клиента с рольюhttps://www.googleapis.com/auth/calendar«

Но когда я использую этот доступ для доступа к GET-запросу
https://www.googleapis.com/calendar/v3/calendars/[CalendarID]?access_token=???

Я всегда получаю сообщение

{
"error": {
"errors": [
{
"domain": "global",
"reason": "notFound",
"message": "Not Found"}
],
"code": 404,
"message": "Not Found"}
}

Кажется, мой access_token не может получить доступ к моему домену. Это мой исходный код для создания access_token.

$private_key = openssl_pkey_get_private('file://key.pem', 'notasecret');

$header = array("alg" => "RS256", "typ" => "JWT");
$header = base64_encode(utf8_encode(json_encode($header)));
$exp = time() + (60 * 60);$jwt_cs = array(
"iss" => "ClientEmail@MyApp",
"scope" => "https://www.googleapis.com/auth/calendar",
"aud" => "https://www.googleapis.com/oauth2/v3/token",
"exp" => $exp,
"iat" => time(),
"access_type" => "offline");
$jwt_cs = base64_encode(utf8_encode(json_encode($jwt_cs)));

openssl_sign($header.'.'.$jwt_cs, $sign, $private_key, 'sha256WithRSAEncryption');

$sign = base64_encode($sign);

$jwt = $header.'.'.$jwt_cs.'.'.$sign;
$login_data = array(
'grant_type' => 'urn:ietf:params:oauth:grant-type:jwt-bearer',
'assertion' => $jwt
);
$url='https://www.googleapis.com/oauth2/v3/token';

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($login_data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$res = curl_exec($ch);
curl_close($ch);

Можешь показать мне мою ошибку?

0

Решение

Задача ещё не решена.

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

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