Bonjour à tous. Voila, dans le cadre d'un projet de ma fac, je doit gérer un calendrier via l'api Google...

J'ai fait quelques tests et j'ai déjà des souçis

Je vous explique, je doit m'identifier, enregistrer le client google en session avec la sérialisation puis le réutiliser, pour le test j'ai fait deux pages pour vérifier que le client fonctionne toujours après sérialisation/dé-sérialisation.

La première:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 
<?php
 
session_start();
require_once 'google-api-php-client/src/Google_Client.php';
require_once 'google-api-php-client/src/contrib/Google_CalendarService.php';
require_once 'google-api-php-client/src/Google_Client.php';
$client = new Google_Client();
$client->setApplicationName('Google');
$client->setClientId('');
$client->setClientSecret('');
$client->setRedirectUri('');
$client->setDeveloperKey('');
$cal = new Google_CalendarService($client);
  if (isset($_GET['code'])) {
	$client->authenticate();
        $_SESSION['token'] = $client->getAccessToken();
	$redirect = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
	header('Location: ' . filter_var($redirect, FILTER_SANITIZE_URL));
  }
 
  if (isset($_SESSION['token'])) {
       $client->setAccessToken($_SESSION['token']);
  }
 
   if ($client->getAccessToken()) {
	echo "<a href='test2.php'>test</a>";	
	$_SESSION['cal']=serialize($cal);
        $_SESSION['obj']=serialize($client);
   } else {
       $authUrl = $client->createAuthUrl();
       header('Location: '.$authUrl.'');
      }
 
?>
Et la deuxième:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
<?php
session_start();
require_once 'google-api-php-client/src/Google_Client.php';
require_once 'google-api-php-client/src/contrib/Google_CalendarService.php';
require_once 'google-api-php-client/src/Google_Client.php';
$client=unserialize($_SESSION['obj']);
$cal=unserialize($_SESSION['cal']);
$event = new Google_Event("nomevent");
$event->setSummary("nomSum");
$event->setLocation('NomEntreprise');
$start = new Google_EventDateTime();
$start->setDateTime('2014-04-10T10:25:00.000-07:00');
$event->setStart($start);
$end = new Google_EventDateTime();
$end->setDateTime('2014-04-17T10:25:00.000-07:00');
$event->setEnd($end);
$attendee1 = new Google_EventAttendee();
$attendee1->setEmail('s@gmail.com');
$attendees = array($attendee1);
$event->attendees = $attendees;
$createdEvent = $cal->events->insert('s@gmail.com', $event);
echo $createdEvent->id;
?>
Sauf que ca ne fonctionne pas... Si je fait la création de l'event dans la première page, ça marche, je n'ai aucun problème, mais si je le fait dans la deuxième, j'ai droit à cette erreur: "PHP Fatal error: Call to a member function sign() on a non-object in google-api-php-client/src/service/Google_ServiceResource.php on line 167, referer: http://localhost/~s/test1.php"

Comme si l'objet avait été modifié entre la première et la deuxième page...

La ligne 167 de ServiceResource c'est ça:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
$httpRequest = Google_Client::$auth->sign($httpRequest);
Bref je ne sait pas quoi faire Si vous avez le temps de m'aider, je suis preneur, merci à vous !