No se puede obtener el token de acceso con Google Calendar Api v3

Estoy tratando de poner un evento de calendario en un calendario sin la solicitud de autenticación. He leído que usar una cuenta de servicio de OAuth le permite hacer esto. He configurado la cuenta de servicio en mi Google Developer Console y no tengo suerte con esto.

Tenemos una cuenta comercial de Google y estoy configurando mi usuario delegado a un administrador de nuestra cuenta para que pueda acceder al calendario de cualquier persona, pero no creará el evento. Creo que el problema es con el token de acceso. Cuando yovar_dump($accessToken) muestraNULL.

<?php
error_reporting(E_ALL);
require_once 'Google/Client.php';
require_once 'Google/Service/Calendar.php';
session_start();    

/* Authentication ID's */    
const CLIENT_ID = '[MY CLIENT ID]';
const SERVICE_ACCOUNT_NAME = '[MY SERVICE ACCOUNT]';
const KEY_FILE = '[MY KEY FILE].p12';
const CALENDAR_SCOPE = "https://www.googleapis.com/auth/calendar";
$key = file_get_contents(KEY_FILE);
$auth = new Google_Auth_AssertionCredentials(
  SERVICE_ACCOUNT_NAME,
  array(CALENDAR_SCOPE),
  $key
);
$auth->sub = "[email protected]";

$client = new Google_Client();
$client->setScopes(array(CALENDAR_SCOPE));
$client->setAssertionCredentials($auth);

$client->getAuth()->refreshTokenWithAssertion();
$accessToken = $client->getAccessToken();

$client->setClientId(CLIENT_ID);

$user = "[email protected]";

if($accessToken){

  $cal = new Google_Service_Calendar($client);

  $event = new Google_Service_Calendar_Event();
  $event->setSummary('TITLE');
  $event->setLocation('World');
  $event->setDescription('test');

  $start = new Google_Service_Calendar_EventDateTime();
  $start->setDate(date('yyyy-mm-dd'));
  $event->setStart($start);

  $end = new Google_Service_Calendar_EventDateTime();
  $end->setDate(date('yyyy-mm-dd'));
  $event->setEnd($end);

  $cal->events->insert($user, $event);
}
?>

He hecho referencia a este otro hilo (Usando una cuenta de servicio, getAccessToken () devuelve nulo) para intentar solucionar este problema pero no he tenido suerte con él.

Cualquier ayuda sería muy apreciada!

Respuestas a la pregunta(2)

Su respuesta a la pregunta