Greifen Sie über das Dienstkonto auf Google-Kalenderereignisse zu: {“error”: “access_denied”}. Keine Google Apps

Ich möchte mit dem Dienstkonto auf den Google Kalender zugreifen. Das ist mein Code:<NUMBER> wird in der Google API Console durch den korrekten Wert ersetzt.

<?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>";

Wenn ich meinen Code ausführe, erhalte ich:

Schwerwiegender Fehler: Ausnahmefehler "Google_AuthException" mit der Meldung "Fehler beim Aktualisieren des OAuth2-Tokens" {"error": "access_denied"} "in /home/www/65683f67e3f0d94b14bba3c945014cda/web/intranet/googleapi/auto/auto/auth : 279 Stack-Trace: # 0 /home/www/65683f67e3f0d94b14bba3c945014cda/web/intranet/googleapi/auth/Google_OAuth2.php(256): Google_OAuth2-> refreshTokenRequest (Array) # 1bba3f03f03f03f9bweb / wp /auth/Google_OAuth2. # 3 /home/www/65683f67e3f0d94b14bba3c945014cda/web/intranet/googleapi/contrib/Google_CalendarService.php(154): Google_ServiceResource -> __anrufen ('Liste', Array) # 4 / home / wwwwwwwwwwwwwwwwwwwwwb. php (32): Google_CalendarListServiceResource-> listCalendarList () # 5 {main} throw n in /home/www/65683f67e3f0d94b14bba3c945014cda/web/intranet/googleapi/auth/Google_OAuth2.php in Zeile 279

Wenn ich meinen Code ändere mit:

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

Ich erhalte:

(403) Zugriff nicht konfiguriert

Was läuft hier falsch?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage