2012-08-08 16 views
5

Quiero crear un nuevo evento en el calendario de google desde la cuenta del servicio. Puedo acceder correctamente e imprimir una lista de todos mis calendarios. Pero cuando quiero crear un nuevo evento, la respuesta es 403 Prohibido.Editar eventos del calendario de Google desde la cuenta de servicio de Google: 403

Mi código:

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

Y la respuesta del servidor:

(403) Forbidden 

¿Alguna idea? Tal vez otro alcance, o permitir editar eventos (no sé dónde puedo configurar esto y lo he buscado, prometo)

Por supuesto, mi calendario es un calendario público.

Cualquier ayuda será bienvenida :)

¡Gracias!

+0

Tal vez está prohibido por una razón? – Peon

+0

Heh, tal vez, pero no sé si hay algún lugar donde pueda editar eventos. En la configuración del calendario, no veo nada, y activo la API de calendario. No tengo problemas para listar caendars y eventos. Solo edita y crea. Pero, en realidad, paso mucho tiempo buscando estas opciones, y no hay nada que hacer: S Gracias – eMarine

Respuesta

12

Lo resolví, y el problema no era el código, funciona bien.

El problema fue compartir mi calendario. Algo que no sé.

Para permitir editar sus eventos de calendario desde la cuenta de servicio, no tiene suficiente con todos los pasos que realiza en Google Api Console, tiene que dar permiso de su configuración de calendario (Configuración de calendario -> Compartir este calendario) al correo electrónico cuenta especificada en Google Api Console (dirección de correo electrónico).

Esto puede ser un problema si se trata de una cuenta comercial, entonces deberá ponerse en contacto con el administrador de la cuenta.

El código que se muestra aquí funciona correctamente, así que espero que ayude a alguien, solo recuerde que debe usar la versión 475 del Google Api Client.

puede encontrar en este enlace: http://google-api-php-client.googlecode.com/svn/trunk/src/

+0

Esto funcionó para mí. Acabo de hacer que el administrador de nuestra cuenta comparta los calendarios con la dirección de correo electrónico de mi cuenta de servicio. ¡Gracias! –

+0

Gracias, gracias, gracias! ¡Esto es lo que estaba buscando! –

+0

¡Estaba buscando una solución por horas! Gracias por responder. – stil

Cuestiones relacionadas