Modifier les événements Google agenda à partir de Google compte de service: 403
Je veux créer un nouvel événement à l'agenda google à partir du Compte de Service.
Je peux accéder correctement et d'imprimer une liste de tous mes calendriers.
Mais quand je veux créer un nouvel événement, la réponse est 403 Forbidden.
Mon 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);
Et la réponse du serveur:
(403) Forbidden
Des idées? Peut-être que d'autres de la portée, ou de permettre de modifier des événements (je ne sais pas où je peux configurer ce et j'ai fouillé, promesse)
Bien sûr, mon calendrier est un calendrier public.
Toute aide sera la bienvenue 🙂
Merci!
- Peut-être qu'il est interdit pour une raison?
- Heh, peut-être, mais je ne sais pas si il y a un endroit où je peux vous permettent de modifier les événements. Au calendrier de configuration je ne vois rien, et je activer le calendrier de l'API. Je n'ai pas de problèmes à la liste caendars, et les événements. Seulement de modifier et de créer. Mais vraiment, je passe beaucoup de temps à chercher cette option, et il n'y a rien à faire :S Merci
Vous devez vous connecter pour publier un commentaire.
Je l'ai résolu, et la question n'était pas de code, Il fonctionne très bien.
Le problème a été le partage de mon calendrier. Quelque chose que je n'ai pas su.
Pour permettre de modifier les événements de votre calendrier à partir du compte de service, n'ont pas assez avec toutes les étapes que vous faites dans l'Api de Google Console, vous devez donner l'autorisation de votre calendrier de configuration (Calendrier de configuration -> Partager ce calendrier) pour le compte de courriel spécifiée dans Google Api Console (adresse email).
Cela peut être un problème si c'est un compte d'affaires, alors vous devrez contacter l'administrateur du compte.
Le code présenté ici fonctionne correctement, donc j'espère que cela aide quelqu'un, rappelez-vous juste que vous devez utiliser 475 version de l'Api de Google Client.
Vous pouvez trouver sur ce lien: http://google-api-php-client.googlecode.com/svn/trunk/src/