Acceda a los eventos del calendario de Google con la cuenta de servicio: {“error”: “access_denied”}. No hay aplicaciones de google

Me gustaría acceder a google calendar usando la cuenta de servicio. Este es mi código:<NUMBER> Se reemplaza por la toma de valor correcta en la Consola API de Google.

<?php

require_once 'googleapi/Google_Client.php';
require_once 'googleapi/contrib/Google_CalendarService.php';

const CLIENT_ID = '<NUMBER>.apps.googleusercontent.com';
const SERVICE_ACCOUNT_NAME  = '<NUMBER>@developer.gserviceaccount.com';
const MY_EMAIL  = '<MY NAME>@gmail.com';
const KEY_FILE = 'privatekey.p12';

$client = new Google_Client();
$client->setClientId(CLIENT_ID);
$client->setApplicationName("<APP NAME>");

$key = file_get_contents(KEY_FILE);
$client->setAssertionCredentials(new Google_AssertionCredentials(
    SERVICE_ACCOUNT_NAME,
    array('https://www.googleapis.com/auth/calendar'),
    $key,
    'notasecret',
    'http://oauth.net/grant_type/jwt/1.0/bearer',
    MY_EMAIL)
);

$cal = new Google_CalendarService($client);
$calList = $cal->calendarList->listCalendarList();

print "<h1>Calendar List</h1><pre>" . print_r($calList, true) . "</pre>";

Cuando ejecuto mi código, recibo:

Fatal error: Excepción no detectada 'Google_AuthException' con el mensaje 'Error al actualizar el token OAuth2, el mensaje: '{ "error": "access_denied"}'' en /home/www/65683f67e3f0d94b14bba3c945014cda/web/intranet/googleapi/auth/Google_OAuth2.php : 279 Rastreo de la pila: # 0 /home/www/65683f67e3f0d94b14bba3c945014cda/web/intranet/googleapi/auth/Google_OA Pleas de las costillas de las costillas de las costillas de las costas de las costas de las costas de las costas de las costas de las costas de las costas / de las costas de las costas de las costas / de las costas / de las costas de las costas de las costas / de las costas / de las costas / de las costas de las costas. /auth/Gopo_OAuth2.php(209): Google_OAuth2-> refreshTokenWithAsertion () # 2 /home/www/65683f67e3f0d94b14/ases de la naturaleza de estas cosas de la naturaleza de las partes de la naturaleza de la naturaleza. # 3 /home/www/65683f67e3f0d94b14bba3c945014cda/web/intranet/googleapi/contrib/Google_CalendarService.php/su/foto/phal/familia_gran_zalea_galera_granza_granza_granza_granza_granza_granza_granza_granza_granza/granza_granza_granza_granza_granza_granza_granza_granza_granza_granza_granza_granza_granza/granza_grasa / n / n licencia / g ralía / n / n / / ___ (llamada '' lista '') php (32): Google_CalendarListServiceResource-> listCalendarList () # 5 {main} throw n en /home/www/65683f67e3f0d94b14bba3c945014cda/web/intranet/googleapi/auth/Google_OAuth2.php en la línea 279

Si cambio mi código con:

$client->setAssertionCredentials(new Google_AssertionCredentials(
SERVICE_ACCOUNT_NAME,
array('https://www.googleapis.com/auth/calendar'),
$key));

Recibo:

(403) Acceso no configurado

¿Qué está mal aquí?

Respuestas a la pregunta(1)

Su respuesta a la pregunta