Comment Inter-agir avec Google Agenda ?

Résolu/Fermé
emrh Messages postés 427 Date d'inscription mardi 9 décembre 2014 Statut Membre Dernière intervention 9 avril 2024 - 22 juil. 2022 à 18:42
emrh Messages postés 427 Date d'inscription mardi 9 décembre 2014 Statut Membre Dernière intervention 9 avril 2024 - 26 juil. 2022 à 16:11

Bonjour à tous,

J'aimerai ajouter à ma web-application la possibilité d'inter-agir avec Google Agenda.
J'ai regardé un ou deux tutos puis la doc de Google. J'ai contacté Ionos mon hébergeur pour lui dire que je souhaitais accéder en ssh à mon serveur pour installer Composer mais comme je suis sur un mutualisé, ce ne sera pas possible. Il m'a toutefois expliqué que je pouvais développer en local puis transférer mes fichiers ensuite... Ce que j'ai commencé à faire !

J'ai donc suivi les indications données ici : https://developers.google.com/calendar/api/quickstart/php

Je lance lance php quickstart.php et copie l'adresse obtenue dans mon navigateur Chrome, et là, Google m'informe que : "Erreur 403 : access_denied The developer hasn’t given you access to this app. It’s currently being tested and it hasn’t been verified by Google".

Je suis presque sûr que le problème vient de l' "URI de redirection autorisé" entrée dans l'API de Google Calendar... Mais je ne sais pas quoi mettre d'autre que l'adresse de mon site Internet !
(Problème vu ici également :
https://stackoverflow.com/questions/34707227/google-client-api-missing-require-parameter-redirect-uri
mais je ne vois pas comment adapter la solution proposée à mon cas).

Auriez vous une idée pour que je puisse débloquer cette situation ?

Merci d'avance pour votre aide ! 

Linux / Chrome 103.0.0.0

A voir également:

10 réponses

emrh Messages postés 427 Date d'inscription mardi 9 décembre 2014 Statut Membre Dernière intervention 9 avril 2024 20
26 juil. 2022 à 16:11
1
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
22 juil. 2022 à 18:58

Bonjour

Lors du lancement de ton script la première fois il a du te donner un code a ecrire dans la console..

Si tu l'as fait en local, il faut supprimer le token et le régénérer depuis ton site web.

Attention.. l'utilisation de cette api depuis un serveur mutualisé n'est pas garantie... Parfois, l'IP du serveur est bl par google... Et c'est complique de la faire débloquer.


0
emrh Messages postés 427 Date d'inscription mardi 9 décembre 2014 Statut Membre Dernière intervention 9 avril 2024 20
22 juil. 2022 à 19:50

Merci Jordan pour cette mise en garde... Tu me conseilles de laisser tomber ?

En fait, j'aimerai "simplement" que mon formulaire d'enregistrement de contrat de location puisse avec les dates d'entrée et de sortie ajouter une entrée dans Google Agenda...

Quand j'ai lancé la commande php quickstart.php depuis mon terminal j'ai obtenu un lien que j'ai collé dans Chrome, qui m'a ensuite demandé de sélectionner un compte Google. J'ai choisi celui pour lequel j'avais besoin d'accéder à l'agenda.
Et c'est là que j'ai l'info : The developer hasn’t given you access to this app. It’s currently being tested and it hasn’t been verified by Google.
J'ai modifié l'URI de mon API en http://127.0.0.1/monsite/api/quickstart.php, mais j'ai la même erreur !

Je ne sais pas comment supprimer le token dont tu parles car je ne sais pas où il est !
Je ne peux générer aucune ligne de commande depuis mon site web car je n'ai aucun accès en SSH et si je lance le fichier quickstart.php depuis mon navigateur j'ai le message d'erreur : 
Fatal error: Uncaught Exception: This application must be run on the command line

 

0
emrh Messages postés 427 Date d'inscription mardi 9 décembre 2014 Statut Membre Dernière intervention 9 avril 2024 20
Modifié le 24 juil. 2022 à 18:42

Après le visionnage de 2 ou 3 tutos youtube (pas trouvé grand chose sur le sujet) dans un anglais au très fort accent Indien, j'ai quand même réussi à avancer dans mon projet d'inter-agir avec Google Agenda. J'ai créé dans ma console.cloud.google.com les bons accès à mon compte avec cette fois ci des autorisations fonctionnelles. 

J'arrive maintenant via cette page de test https://developers.google.com/calendar/api/v3/reference/events/insert?hl=fr&apix=true#try-it à écrire dans mon agenda...

Le problème c'est que ces fameux tutos ne sont pas biens clairs quant à la procédure pour écrire depuis mes pages web en php dans mon agenda...

J'ai ce bout de code : 

<?php
$event = new Google_Service_Calendar_Event(array(
  'summary' => 'TEST',
  'location' => '800 Howard St., San Francisco, CA 94103',
  'description' => 'A chance to hear more about Google\'s developer products.',
  'start' => array(
    'date' => '2022-01-01',
    'timeZone' => 'America/Los_Angeles',
  ),
  'end' => array(
    'date' => '2022-01-05',
    'timeZone' => 'America/Los_Angeles',
  ),
  'recurrence' => array(
    'RRULE:FREQ=DAILY;COUNT=2'
  ),
  'attendees' => array(),
  'reminders' => array(
    'useDefault' => FALSE,
    'overrides' => array(
      array('method' => 'email', 'minutes' => 24 * 60),
      array('method' => 'popup', 'minutes' => 10),
    ),
  ),
));

$calendarId = 'monagenda.rhnorhnerhencpacnn.calendar.google.com';
$event = $service->events->insert($calendarId, $event);
printf('Event created: %s\n', $event->htmlLink);
?>

Qui me donne cette erreur : 
Fatal error: Uncaught Error: Class 'Google_Service_Calendar_Event' not found in /var/www/html/gite/gestion/api/event.php

Pourriez vous me conseiller ?

0
emrh Messages postés 427 Date d'inscription mardi 9 décembre 2014 Statut Membre Dernière intervention 9 avril 2024 20
24 juil. 2022 à 18:48

J'ai également trouvé ce bout de code, qui en partie ressemble au précédent, mais plus complet parce qu'il contient un accès à mon credentials.json : 

// Exit if accessed directly
defined('ABSPATH') || exit;

ini_set('memory_limit', '-1');
ini_set('max_execution_time', '-1');
ini_set('display_errors', 1);

/**
 *  update google code
 */
add_action('wp_footer', 'create_google_calendar_events');
function create_google_calendar_events()
{
	$credentials = __DIR__ . '/credentials.json';
	require __DIR__ . '/vendor/autoload.php';

	$client = new Google_Client();
	$client->setApplicationName('testoo');
	$client->getScope(array(Google_Service_Calendar::CALENDAR));
	$client->setAuthConfig($credentials);
	$client->setAccessType('offline');
	$client->getAccessToken();
	$client->getRefreshToken();

	$service = new Google_Service_Calendar($client);

	$event = new Google_Service_Calendar_event(array(
		'summary' => 'testing',
		'location' => '800 Howard',
		'description' => 'Bla Bla Bla',
		'start' => array(
			'date' => '2022-01-02',
			'timeZone' => 'America/Los_Angeles',
		),
		'end' => array(
			'date' => '2022-01-05',
			'timeZone' => 'America/Los_Angeles',
		),
		'recurrence' => array(
			'RRULE:FREQ=DAILY;COUNT=2'
		),
		'attendees' => array(),
		'reminders' => array(),
		'useDefault' => FALSE,
		'overrides' => array(
			array('method' => 'email', 'minutes' => 24 * 60),
			array('method' => 'popup', 'minutes' => 10),
		),
		),
	);//));
	
	$calendarId = 'eozirenonrezntornnr@group.calendar.google.com';
	$event      = $service->events->insert($calendarId, $event);
	print_r($event->htmlLink);
}
?>

Malheureusement je ne parviens pas à récupérer les 12 premières lignes, du coup, même en neutralisant l'appel de la fonction la page reste désespérément vide ainsi que l'agenda ! 

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
emrh Messages postés 427 Date d'inscription mardi 9 décembre 2014 Statut Membre Dernière intervention 9 avril 2024 20
24 juil. 2022 à 19:02

Enfin, le fichier quickstart.php de Google donne plutôt un bon résultat (pas d'erreur en tous cas) mais je ne vois toujours pas comment écrire dans mon agenda : 

<?php
require __DIR__ . '/vendor/autoload.php';

/*if (php_sapi_name() != 'cli') {
    throw new Exception('This application must be run on the command line.');
}*/

use Google\Client;
use Google\Service\Calendar;

/**
 * Returns an authorized API client.
 * @return Client the authorized client object
 */
function getClient()
{
    $client = new Client();
    $client->setApplicationName('Google Calendar API PHP Quickstart');
    $client->setScopes(Google_Service_Calendar::CALENDAR); //<= SELON DOC developers.google.com
    $client->setAuthConfig('credentials.json');
    $client->setAccessType('offline');
    $client->setPrompt('select_account consent');

    // Load previously authorized token from a file, if it exists.
    // The file token.json stores the user's access and refresh tokens, and is
    // created automatically when the authorization flow completes for the first
    // time.
    $tokenPath = 'token.json';
    if (file_exists($tokenPath)) {
        $accessToken = json_decode(file_get_contents($tokenPath), true);
        $client->setAccessToken($accessToken);
    }

    // If there is no previous token or it's expired.
    if ($client->isAccessTokenExpired()) {
        // Refresh the token if possible, else fetch a new one.
        if ($client->getRefreshToken()) {
            $client->fetchAccessTokenWithRefreshToken($client->getRefreshToken());
        } else {
            // Request authorization from the user.
            $authUrl = $client->createAuthUrl();
            printf("Open the following link in your browser:\n%s\n", $authUrl);
            print 'Enter verification code: ';
            $authCode = trim(fgets(STDIN));

            // Exchange authorization code for an access token.
            $accessToken = $client->fetchAccessTokenWithAuthCode($authCode);
            $client->setAccessToken($accessToken);

            // Check to see if there was an error.
            if (array_key_exists('error', $accessToken)) {
                throw new Exception(join(', ', $accessToken));
            }
        }
        // Save the token to a file.
        if (!file_exists(dirname($tokenPath))) {
            mkdir(dirname($tokenPath), 0700, true);
        }
        file_put_contents($tokenPath, json_encode($client->getAccessToken()));
    }
    return $client;
}

// Get the API client and construct the service object.
$client = getClient();
$service = new Calendar($client);

// Print the next 10 events on the user's calendar.
try{

    $calendarId = 'xxxxxxxxxxxxxxxxxxx@group.calendar.google.com'; 
    $optParams = array(
        'maxResults' => 10,
        'orderBy' => 'startTime',
        'singleEvents' => true,
        'timeMin' => date('c'),
    );
    $results = $service->events->listEvents($calendarId, $optParams);
    $events = $results->getItems();

    if (empty($events)) {
        print "No upcoming events found.\n";
    } else {
        print "Upcoming events:\n";
        foreach ($events as $event) {
            $start = $event->start->dateTime;
            if (empty($start)) {
                $start = $event->start->date;
            }
            printf("%s (%s)\n", $event->getSummary(), $start);
        }
    }
}
catch(Exception $e) {
    // TODO(developer) - handle error appropriately
    echo 'Message: ' .$e->getMessage();
}
?>

RÉSULTAT : 

No upcoming events found.

0
emrh Messages postés 427 Date d'inscription mardi 9 décembre 2014 Statut Membre Dernière intervention 9 avril 2024 20
25 juil. 2022 à 11:22

1. Suppression du projet initial
2. Création d'un nouveau projet "Gestion-Agenda" sur console.cloud.google.com
3. Activation de la bibliothèque Google Calendar Api
4. Création d'un User Type Externe pour OAuth 2.0
5. Création d'un identifiant Compte de Service
6. Ajout d'une clé de type JSON à ce compte de service (enregistré en credentials.json au même niveau que quickstart.php)
7. Modification de quickstart.php pour l'ajout d'un event : 

<?php
require __DIR__ . '/vendor/autoload.php';

/*
if (php_sapi_name() != 'cli') {
    throw new Exception('This application must be run on the command line.');
}
*/

use Google\Client;
use Google\Service\Calendar;

/**
 * Returns an authorized API client.
 * @return Client the authorized client object
 */
function getClient()
{
    $client = new Client();
    $client->setApplicationName('Google Calendar API PHP Quickstart');
    $client->setScopes('https://www.googleapis.com/auth/calendar');//.events.readonly');
    $client->setAuthConfig('credentials.json');
    $client->setAccessType('offline');
    $client->setPrompt('select_account consent');

    // Load previously authorized token from a file, if it exists.
    // The file token.json stores the user's access and refresh tokens, and is
    // created automatically when the authorization flow completes for the first
    // time.
    $tokenPath = 'token.json';
    if (file_exists($tokenPath)) {
        $accessToken = json_decode(file_get_contents($tokenPath), true);
        $client->setAccessToken($accessToken);
    }

    // If there is no previous token or it's expired.
    if ($client->isAccessTokenExpired()) {
        // Refresh the token if possible, else fetch a new one.
        if ($client->getRefreshToken()) {
            $client->fetchAccessTokenWithRefreshToken($client->getRefreshToken());
        } else {
            // Request authorization from the user.
            $authUrl = $client->createAuthUrl();
            printf("Open the following link in your browser:\n%s\n", $authUrl);
            print 'Enter verification code: ';
            $authCode = trim(fgets(STDIN));

            // Exchange authorization code for an access token.
            $accessToken = $client->fetchAccessTokenWithAuthCode($authCode);
            $client->setAccessToken($accessToken);

            // Check to see if there was an error.
            if (array_key_exists('error', $accessToken)) {
                throw new Exception(join(', ', $accessToken));
            }
        }
        // Save the token to a file.
        if (!file_exists(dirname($tokenPath))) {
            mkdir(dirname($tokenPath), 0700, true);
        }
        file_put_contents($tokenPath, json_encode($client->getAccessToken()));
    }
    return $client;
}


// Get the API client and construct the service object.
$client = getClient();
$service = new Calendar($client);

// Print the next 10 events on the user's calendar.
/*try{

    $calendarId = 'primary';
    $optParams = array(
        'maxResults' => 10,
        'orderBy' => 'startTime',
        'singleEvents' => true,
        'timeMin' => date('c'),
    );
    $results = $service->events->listEvents($calendarId, $optParams);
    $events = $results->getItems();

    if (empty($events)) {
        print "No upcoming events found.\n";
    } else {
        print "Upcoming events:\n";
        foreach ($events as $event) {
            $start = $event->start->dateTime;
            if (empty($start)) {
                $start = $event->start->date;
            }
            printf("%s (%s)\n", $event->getSummary(), $start);
        }
    }
}
catch(Exception $e) {
    // TODO(developer) - handle error appropriately
    echo 'Message: ' .$e->getMessage();
}*/


// AJOUT À L'AGENDA : 
try{
    $event = new Google_Service_Calendar_Event(array(
      'summary' => 'TEST AJOUT',
      'location' => '800 Howard St., San Francisco, CA 94103',
      'description' => 'A chance to hear more about Google\'s developer products.',
      'start' => array(
        'date' => '2023-01-01',
        'timeZone' => 'America/Los_Angeles',
      ),
      'end' => array(
        'date' => '2023-01-04',
        'timeZone' => 'America/Los_Angeles',
      ),
      'recurrence' => array(
        'RRULE:FREQ=DAILY;COUNT=2'
      ),
      'attendees' => array(),
      'reminders' => array(
        'useDefault' => FALSE,
        'overrides' => array(
          array('method' => 'email', 'minutes' => 24 * 60),
          array('method' => 'popup', 'minutes' => 10),
        ),
      ),
    ));

    $calendarId = 'primary';
    $event = $service->events->insert($calendarId, $event);
    printf('Event created: %s\n', $event->htmlLink);
}
catch(Exception $e) {
    // TODO(developer) - handle error appropriately
    echo 'Message: ' .$e->getMessage();
}
?>

MESSAGE AFFICHÉ À L'EXÉCUTION DE QUICKSTART.PHP : 
Event created: https://www.google.com/calendar/event?eid=RRRWNwdm5vYjBpcnRRRRRRcjFqb2dfMjAyMjARRRRRdGlvbi1hZ2VuZGRRRRR2VuZGEtMzU3NDA5LmlhbS5RRRRVydmljZWFjRRRRRbnQuY29t%5Cn

Du mieux mais toujours rien dans l'agenda !

Le même code quickstart.php en lecture d'agenda, c'est à dire en dé-commentant la partie // Print the next 10 events on the user's calendar. me donne : 
Upcoming events: TEST AJOUT (2023-01-01) TEST AJOUT (2023-01-02)

0
yg_be Messages postés 22698 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 avril 2024 1 471
25 juil. 2022 à 11:43

bonjour,

Si je comprends bien, tu écris "toujours rien dans l'agenda", alors que ton code "en lecture d'agenda" prouve que les évènements sont dans l'agenda.

Nous as-tu expliqué ce qui se passait quand tu utilisait le lien vers l'évenement créé?

Ne serait-il pas préférable de ne pas toujours utiliser le même titre pour ces évènements, par exemple en ajoutant le moment d'exécution du script dans le titre?
 

0
emrh Messages postés 427 Date d'inscription mardi 9 décembre 2014 Statut Membre Dernière intervention 9 avril 2024 20 > yg_be Messages postés 22698 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 avril 2024
25 juil. 2022 à 13:03

Bonjour yg_be,

Tu as bien compris, "Toujours rien dans l'agenda" signifie je quand j'utilise Google Chrome pour aller sur mon agenda, si je vais en JANVIER 2023, c'est tout vide !
Par contre, si je neutralise la partie du code concernant l'insertion de données pour activer celle de lecture, et que je fais F5 sur quickstart.php il me trouve bien mon ajout (cf Upcoming events...).

Ce qui se passe quand j'utilise le lien vers l'évenement créé :
Mon navigateur ouvre Google Angenda au mois de Juillet 2022

Toujours utiliser le même titre pour ces événements ?
Je change régulièrement mes intitulés, mais ça ne change rien

0
emrh Messages postés 427 Date d'inscription mardi 9 décembre 2014 Statut Membre Dernière intervention 9 avril 2024 20 > emrh Messages postés 427 Date d'inscription mardi 9 décembre 2014 Statut Membre Dernière intervention 9 avril 2024
25 juil. 2022 à 13:05

Upcoming events: TEST AJOUT (2023-01-01) TEST AJOUT (2023-01-01) ETIENNE (2023-01-01T16:00:00Z) ETIENNE (2023-01-01T16:00:00Z) TEST AJOUT (2023-01-02) TEST AJOUT (2023-01-02) ETIENNE (2023-01-02T16:00:00Z) ETIENNE (2023-01-02T16:00:00Z)

0
emrh Messages postés 427 Date d'inscription mardi 9 décembre 2014 Statut Membre Dernière intervention 9 avril 2024 20 > emrh Messages postés 427 Date d'inscription mardi 9 décembre 2014 Statut Membre Dernière intervention 9 avril 2024
25 juil. 2022 à 13:10

Si je change le $calendarId = 'primary';  par l'ID de mon agenda : 
Message: { "error": { "errors": [ { "domain": "global", "reason": "notFound", "message": "Not Found" } ], "code": 404, "message": "Not Found" } }

(à l'insertion comme à la lecture)

0
yg_be Messages postés 22698 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 avril 2024 1 471 > emrh Messages postés 427 Date d'inscription mardi 9 décembre 2014 Statut Membre Dernière intervention 9 avril 2024
25 juil. 2022 à 13:28

Je proposais de changer le titre afin de confirmer que le programme lecteur trouve bien les derniers évènements créés.

Via le navigateur, dans Google Agenda, tu ne vois aucun autre agenda pour le même compte?

Moi, j'essaierais, via le navigateur, dans Google Agenda, de créer un nouvel agenda (pour le même compte), et ensuite d'utiliser son nom comme $calendarId.

0
emrh Messages postés 427 Date d'inscription mardi 9 décembre 2014 Statut Membre Dernière intervention 9 avril 2024 20
25 juil. 2022 à 13:41

Le compte Google utilise plusieurs agenda, chaque employé à le sien (5) + celui que j'ai créé GESTION.

Ils sont tous cochés "visible".

Toutes les tentatives de remplacer $calendarId par autre chose que 'primary' se soldent par le message #10

0
emrh Messages postés 427 Date d'inscription mardi 9 décembre 2014 Statut Membre Dernière intervention 9 avril 2024 20
25 juil. 2022 à 14:11

Petite info au passage, mes tests se font depuis mon PC portable et il me semble avoir lu qu'il fallait être en https...
Du coup, j'ai transféré mes 17.000 fichiers (?!?!?) google, composer, paragonie, .... sur mon serveur Ionos qui lui est en https et maintenant j'ai cette erreur à l'insertion dans l'agenda : 

 Message: { "error": { "code": 403, "message": "Request had insufficient authentication scopes.", "errors": [ { "message": "Insufficient Permission", "domain": "global", "reason": "insufficientPermissions" } ], "status": "PERMISSION_DENIED", "details": [ { "@type": "type.googleapis.com/google.rpc.ErrorInfo", "reason": "ACCESS_TOKEN_SCOPE_INSUFFICIENT", "domain": "googleapis.com", "metadata": { "service": "calendar-json.googleapis.com", "method": "calendar.v3.Events.Insert" } } ] } }

0
emrh Messages postés 427 Date d'inscription mardi 9 décembre 2014 Statut Membre Dernière intervention 9 avril 2024 20
Modifié le 25 juil. 2022 à 15:45

J'ai refait un compte de service, généré une nouvelle clé et je n'ai plus l'erreur 403 !
J'avais pas fais gaffe (car très discret) que le lien après insertion affichait : 
Impossible de trouver l'événement demandé

J'ai essayé aussi des insertions sans les Timezone America/Los_Angeles et les DateTime, 
j'ai ça en lecture : 
Upcoming events: ETIENNE (2023-01-01) ETIENNE (2023-01-01T16:00:00Z) ETIENNE (2023-01-02) ETIENNE (2023-01-02T16:00:00Z)

0
emrh Messages postés 427 Date d'inscription mardi 9 décembre 2014 Statut Membre Dernière intervention 9 avril 2024 20
Modifié le 25 juil. 2022 à 16:31

Grosse Grosse avancée : 
 

Quand j'ai créé dans console.cloud.google.com un compte de service, puis ensuite pour ce compte j'ai créé une clé j'ai obtenu un fichier JSON + une adresse mail de type nomdemonprojet@nomdemonprojet-785123.iam.gserviceaccount.com

1. Je suis allé dans mon Agenda Google, sur l'agenda GESTION créé pour recevoir les event de mon code PHP pour ajouter cette adresse mail dans "partager avec des personnes en particulier"

2. J'ai récupéré l'ID de cet Agenda GESTION pour l'affecter à la variable $calendarId.

J'ai relancé ma page quickstart.php et TAAAADAAAAA : 

<?php
require __DIR__ . '/vendor/autoload.php';

/*
if (php_sapi_name() != 'cli') {
    throw new Exception('This application must be run on the command line.');
}
*/

use Google\Client;
use Google\Service\Calendar;

/**
 * Returns an authorized API client.
 * @return Client the authorized client object
 */
function getClient()
{
    $client = new Client();
    $client->setApplicationName('Google Calendar API PHP Quickstart');
    $client->setScopes('https://www.googleapis.com/auth/calendar');//.events.readonly');<= MODIFIER ICI
    $client->setAuthConfig('credentials.json');//<= Le fichier d'autentification
    $client->setAccessType('offline');
    $client->setPrompt('select_account consent');

    // Load previously authorized token from a file, if it exists.
    // The file token.json stores the user's access and refresh tokens, and is
    // created automatically when the authorization flow completes for the first
    // time.
    $tokenPath = 'token.json';
    if (file_exists($tokenPath)) {
        $accessToken = json_decode(file_get_contents($tokenPath), true);
        $client->setAccessToken($accessToken);
    }

    // If there is no previous token or it's expired.
    if ($client->isAccessTokenExpired()) {
        // Refresh the token if possible, else fetch a new one.
        if ($client->getRefreshToken()) {
            $client->fetchAccessTokenWithRefreshToken($client->getRefreshToken());
        } else {
            // Request authorization from the user.
            $authUrl = $client->createAuthUrl();
            printf("Open the following link in your browser:\n%s\n", $authUrl);
            print 'Enter verification code: ';
            $authCode = trim(fgets(STDIN));

            // Exchange authorization code for an access token.
            $accessToken = $client->fetchAccessTokenWithAuthCode($authCode);
            $client->setAccessToken($accessToken);

            // Check to see if there was an error.
            if (array_key_exists('error', $accessToken)) {
                throw new Exception(join(', ', $accessToken));
            }
        }
        // Save the token to a file.
        if (!file_exists(dirname($tokenPath))) {
            mkdir(dirname($tokenPath), 0700, true);
        }
        file_put_contents($tokenPath, json_encode($client->getAccessToken()));
    }
    return $client;
}


// Get the API client and construct the service object.
$client = getClient();
$service = new Calendar($client);

// LIRE DANS L'AGENDA
/*try{

    $calendarId = 'primary';
    $optParams = array(
        'maxResults' => 10,
        'orderBy' => 'startTime',
        'singleEvents' => true,
        'timeMin' => date('c'),
    );
    $results = $service->events->listEvents($calendarId, $optParams);
    $events = $results->getItems();

    if (empty($events)) {
        print "No upcoming events found.\n";
    } else {
        print "Upcoming events:\n";
        foreach ($events as $event) {
            $start = $event->start->dateTime;
            if (empty($start)) {
                $start = $event->start->date;
            }
            printf("%s (%s)\n", $event->getSummary(), $start);
        }
    }
}
catch(Exception $e) {
    // TODO(developer) - handle error appropriately
    echo 'Message: ' .$e->getMessage();
}*/


// AJOUT À L'AGENDA : 
try{
    $event = new Google_Service_Calendar_Event(array(
      'summary' => 'VIVA',
      'location' => '800 Howard St., San Francisco, CA 94103',
      'description' => 'A chance to hear more about Google\'s developer products.',
      'start' => array(
        'date' => '2023-01-30',
    ),
      'end' => array(
        'date' => '2023-02-01',
      ),
      'recurrence' => array(),
      'attendees' => array(),
      'reminders' => array(),
    ));

    $calendarId = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX@group.calendar.google.com';
    $event = $service->events->insert($calendarId, $event);
    printf('Event created: %s\n', $event->htmlLink);
}
catch(Exception $e) {
    // TODO(developer) - handle error appropriately
    echo 'Message: ' .$e->getMessage();
}
?>
0
emrh Messages postés 427 Date d'inscription mardi 9 décembre 2014 Statut Membre Dernière intervention 9 avril 2024 20
25 juil. 2022 à 16:35

J'ai dit grosse avancée, mais tout n'est pas réglé, car si on regarde le code on voit : 

Date de début : 2023-01-30
Date de fin : 2023-02-01

Et si je regarde dans mon agenda je vois que je me suis fais gratter 1 jour !

0