2012-08-08 5 views
5

Ich möchte ein neues Ereignis im Google Kalender aus dem Dienstkonto erstellen. Ich kann korrekt zugreifen und eine Liste aller meiner Kalender drucken. Aber wenn ich ein neues Ereignis erstellen möchte, ist die Antwort 403 verboten.Google Kalenderereignisse vom Google-Dienstkonto bearbeiten: 403

Mein Code:

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

session_start(); 

const CLIENT_ID = 'XXXXXXXXXX.apps.googleusercontent.com'; 
const SERVICE_ACCOUNT_NAME = '[email protected]'; 

const KEY_FILE = 'google_src/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-privatekey.p12'; 

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

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

$key = file_get_contents(KEY_FILE); 
$client->setClientId(CLIENT_ID); 
$client->setAssertionCredentials(new Google_AssertionCredentials(
    SERVICE_ACCOUNT_NAME, 
    'https://www.google.com/calendar/feeds/MY_CALENDAR_ID/private/full/', 
    $key) 
); 

$client->setClientId(CLIENT_ID); 
$cal = new Google_CalendarService($client); 
$event = new Google_Event(); 
$event->setSummary('Bon dia pel matí!'); 
$event->setLocation('Somewhere'); 
$start = new Google_EventDateTime(); 
$start->setDateTime('2012-08-06T10:00:00.000-07:00'); 
$event->setStart($start); 
$end = new Google_EventDateTime(); 
$end->setDateTime('2012-09-06T10:25:00.000-07:00'); 
$event->setEnd($end); 

$createdEvent = $cal->events->insert(CALENDAR_NAME, $event); 

Und Server-Antwort:

(403) Forbidden 

Irgendwelche Ideen? Vielleicht anderen Bereich oder erlauben Bearbeitungsereignisse (ich weiß nicht, wo ich das konfigurieren kann und ich habe es gesucht, versprochen)

Natürlich ist mein Kalender ein öffentlicher Kalender.

Jede Hilfe wird :)

Dank willkommen!

+0

Vielleicht ist es für einen Grund verboten? – Peon

+0

Heh, vielleicht, aber ich weiß nicht, ob es einen Ort gibt, an dem ich Events bearbeiten kann. Bei der Kalenderkonfiguration sehe ich nichts, und ich aktiviere Kalender-API. Ich habe keine Probleme, Caendars und Ereignisse aufzulisten. Nur bearbeiten und erstellen. Aber wirklich, ich verbringe viel Zeit diese Optionen zu suchen, und es gibt nichts zu tun: S Danke – eMarine

Antwort

12

Ich löste es, und das Problem war nicht Code, Es funktioniert gut.

Das Problem war, meinen Kalender zu teilen. Etwas, das ich nicht wusste.

Damit Sie Ihre Kalenderereignisse über das Dienstkonto bearbeiten können, müssen Sie nicht alle Schritte in der Google API-Konsole ausführen. Sie müssen der Kalenderkonfiguration (Kalenderkonfiguration -> Kalender freigeben) die Berechtigung für die E-Mail erteilen Konto in Google Api Console angegeben (E-Mail-Adresse).

Dies kann ein Problem sein, wenn es sich um ein Geschäftskonto handelt. Dann müssen Sie sich an den Kontoadministrator wenden.

Der hier gezeigte Code funktioniert ordnungsgemäß, ich hoffe, es hilft jemandem, denken Sie daran, dass Sie die Version 475 des Google API-Clients verwenden müssen.

Sie unter diesem Link finden: http://google-api-php-client.googlecode.com/svn/trunk/src/

+0

Das funktionierte für mich. Ich hatte gerade unser Konto Admin die Kalender mit der E-Mail-Adresse des Dienstkontos teilen. Vielen Dank! –

+0

Danke, danke, danke! Das habe ich gesucht! –

+0

Ich suchte stundenlang nach Lösung! Danke für die Antwort. – stil

Verwandte Themen