Question

La documentation pour Google Calendar API est obsolète, je ne parviens pas à obtenir une simple liste de calendrier.Voici mon code jusqu'à présent.

<?php
require_once "includes/partials/_header.php";
set_include_path(get_include_path() . '/google-api-php-client/src');

$client_id = 'xxxx.apps.googleusercontent.com';
$service_account = 'xxxx@developer.gserviceaccount.com';
$p12 = 'xxxx-privatekey.p12';

session_start();
require_once 'Google/Client.php';
require_once 'Google/Service/Calendar.php';

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

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

$key = file_get_contents($p12);
$client->setClientId($client_id);
$cred = new Google_Auth_AssertionCredentials(
    $service_account,
    array('https://www.googleapis.com/auth/calendar'),
    $key);

$client->setAssertionCredentials($cred);
if($client->getAuth()->isAccessTokenExpired()) {
  $client->getAuth()->refreshTokenWithAssertion($cred);
}
$_SESSION['service_token'] = $client->getAccessToken();

$cal = new Google_Service_Calendar($client);

$events = $cal->calendarList->listCalendarList();
echo "<pre>";
print_r($events);
echo"</pre>";

while(true) {
    foreach ($events->getItems() as $event) {
    echo $event->getSummary();
        print_r($event);
  }
  $pageToken = $events->getNextPageToken();
  if ($pageToken) {
    $optParams = array('pageToken' => $pageToken);
    $events = $service->calendarList->listCalendarList($optParams);
  } else {
    break;
  }
}
?>

J'ai beaucoup de ce code à partir de différents sites car les docs étaient obsolètes, maintenant je suis totalement coincé comme je suis googling toute la journée.Toute idée?

Tout ce que je reçois jusqu'à présent, c'est une réponse comme celle-ci sans "articles"

Google_Service_Calendar_CalendarList Object
(
    [etag] => "xxxxxxxxxxxx"
    [itemsType:protected] => Google_Service_Calendar_CalendarListEntry
    [itemsDataType:protected] => array
    [kind] => calendar#calendarList
    [nextPageToken] => 
    [nextSyncToken] => 00001401741798955000
    [collection_key:protected] => items
    [modelData:protected] => Array
        (
            [items] => Array
                (
                )

        )

    [processed:protected] => Array
        (
        )

)

Était-ce utile?

La solution

Confrontez-vous, cela est embarrassant après tout le temps que j'ai passé à ce sujet.Pour une raison quelconque, je n'ai jamais essayé de faire le public du calendrier.Je viens de supposer qu'avec toutes les étapes d'autorisation que vous pouvez accéder au calendrier du compte de projet.Devinez non.

Fix facile ... Faites simplement le calendrier dans ses paramètres.

Pour les événements, remplacez $ CAL-> CalendrierList Partie avec

$cal->events->listEvents('calendarID', $optionalParams);

Remarque: Je ne suis même pas sûr que tous les trucs de jeton d'autorisation / accès à la session sont nécessaires, il semble que la page Docs de Google CAL utilise toujours l'ancien client PHP.Je crois que cela devrait fonctionner en utilisant uniquement le compte de service (SETASSERTIONRESCRÉDIENNES) Le reste avec la session que je ne suis pas sûr.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top