2012-08-08 17 views
5

Voglio creare un nuovo evento nel calendario di Google dall'account del servizio. Posso accedere correttamente e stampare un elenco di tutti i miei calendari. Ma quando voglio creare un nuovo evento la risposta è 403 Proibita.Modifica gli eventi del calendario Google dall'account del servizio Google: 403

Il mio codice:

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); 

e server di risposta:

(403) Forbidden 

Tutte le idee? Forse altro scopo, o consentire gli eventi di modifica (non so dove posso configurarlo e l'ho cercato, prometto)

Naturalmente, il mio calendario è un calendario pubblico.

Qualsiasi aiuto sarà benvenuto :)

Grazie!

+0

Forse è proibito per un motivo? – Peon

+0

Heh, forse, ma non so se ci sia un posto dove posso permettere di modificare gli eventi. Alla configurazione del calendario non vedo nulla e attivo l'API del calendario. Non ho problemi ad elencare caendars ed eventi. Solo modificare e creare. Ma davvero, passo molto tempo a cercare queste opzioni, e non c'è nulla da fare: S Grazie – eMarine

risposta

12

Ho risolto, e il problema non era il codice, funziona bene.

Il problema era condividere il mio calendario. Qualcosa che non sapevo.

Per consentire la modifica degli eventi del calendario dall'account del servizio, non sono sufficienti con tutti i passaggi che si svolgono in Google Api Console, è necessario concedere l'autorizzazione dalla configurazione del calendario (configurazione calendario -> Condividi questo calendario) all'e-mail account specificato in Google Api Console (indirizzo e-mail).

Questo può essere un problema se si tratta di un account aziendale, quindi sarà necessario contattare l'amministratore dell'account.

Il codice mostrato qui funziona correttamente, quindi spero che aiuti qualcuno, ricorda solo che devi usare la versione 475 del client Google Api.

Potete trovare a questo link: http://google-api-php-client.googlecode.com/svn/trunk/src/

+0

Questo ha funzionato per me. Ho appena avuto l'amministratore del mio account per condividere i calendari con l'indirizzo email dell'account del mio servizio. Grazie! –

+0

Grazie, grazie, grazie! Questo è quello che stavo cercando! –

+0

Cercavo una soluzione per ore! Grazie per la risposta. – stil

Problemi correlati