Zend Gdata calendar

Fermé
delaville81 Messages postés 196 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 2 juin 2024 - Modifié par baladur13 le 26/02/2015 à 10:35
delaville81 Messages postés 196 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 2 juin 2024 - 16 mars 2015 à 18:49
Chers Confrères,
Je sollicite votre aide pour un souci que je rencontre avec zend gdata. Je souhaite à partir de mon site pouvoir créer en PHP des rendez vous que le stocke ensuite sur google aganda. J'arrive à me connecter mais rien ensuite ne se passe comme il faudrait. J'ai bien suivi la doc mais rien n'a y faire.

Mon code
<?php

$path = '/www/ppe/library';
$oldPath = set_include_path(get_include_path() . PATH_SEPARATOR . $path);

require_once 'Zend/Loader.php';
Zend_Loader::loadClass('Zend_Gdata');
Zend_Loader::loadClass('Zend_Gdata_ClientLogin');
Zend_Loader::loadClass('Zend_Gdata_Calendar');
Zend_Loader::loadClass('Zend_Gdata_AuthSub');


// User whose calendars you want to access
$user = 'mon_mail@gmail.com';
$pass = 'mon_mot_de_passe';
$service = Zend_Gdata_Calendar::AUTH_SERVICE_NAME; 
try
{
 $client = Zend_Gdata_ClientLogin::getHttpClient($user,$pass,$service);  
}
catch(Exception $e)
{
 // prevent Google username and password from being displayed
 // if a problem occurs
 echo "Could not connect to calendar.";
 die();
}

$service = new Zend_Gdata_Calendar($client);
 
include('fonctions.php');

try {
    $listFeed = $service->getCalendarListFeed();
} catch (Zend_Gdata_App_Exception $e) {
    echo "Error: " . $e->getMessage();
 
}
?>


Je fait appel aux fonctions dans fonction.php :
getCurrentUrl
getAuthSubHttpClient

et
<?php
$my_calendar =
    'http://www.google.com/calendar/feeds/default/private/full';
 
if (!isset($_SESSION['cal_token'])) {
    if (isset($_GET['token'])) {
        // Vous pouvez convertir le jeton unique en jeton de session.
        $session_token =
            Zend_Gdata_AuthSub::getAuthSubSessionToken($_GET['token']);
        // Enregistre le jeton de session, dans la session PHP.
        $_SESSION['cal_token'] = $session_token;
    } else {
        // Affiche le lien permettant la génération du jeton unique.
        $googleUri = Zend_Gdata_AuthSub::getAuthSubTokenUri(
            'http://'. $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'],
            $my_calendar, 0, 1);
        echo "Cliquez <a href='$googleUri'>ici</a>"
           . " pour autoriser votre application.";
        exit();
    }
}
 
// Création d'un client HTTP authentifié
// pour les échanges avec les serveurs Google.
$client = Zend_Gdata_AuthSub::getHttpClient($_SESSION['cal_token']);



// Création d'un objet Gdata utilisant le client HTTP authentifié :
$service = new Zend_Gdata_Calendar($client);
?>


A partir de listFeed ça ne marche pas.
Pouvez vous me dire où est le problème ?

D'avance meri



Bien PHPment et MySQLment
Delaville
A voir également:

4 réponses

Je me suis un peu fait chier à l'époque, je me suis donc créer une classe :

<?php
class google_agenda
{
 var $mail;
 var $password;
 var $service;
 var $client;
 
 function __construct($mail_,$password_)
 {
  $this->mail = $mail_;
  $this->password = $password_;
  $serviceName = Zend_Gdata_Calendar::AUTH_SERVICE_NAME;
  $this->client = Zend_Gdata_ClientLogin::getHttpClient($this->mail, $this->password, $serviceName);
  $this->service = new Zend_Gdata_Calendar($this->client);
 }
 
 function create_evenement($titre,$descriptif,$date_debut,$date_fin)
 {
  //creation de l'evenement
  $event= $this->service->newEventEntry();
  $event->title = $this->service->newTitle($titre);
  $event->content = $this->service->newContent($descriptif);
  //creation du moment
  $when = $this->service->newWhen();
  $when->startTime = $date_debut; // 8th July 2010, 4:30 pm (+5:30 GMT)
  $when->endTime = $date_fin;
  //on ajoute le moment à l'evenement
  $event->when = array($when);
  //ajout de l'evenement au calendrier
  $newEvent = $this->service->insertEvent($event);
  // on renvoie l'id de l'evenement...
  return $newEvent->id->text;
 }
 
 function update_evenement_date($eventUri,$date_debut,$date_fin)
 {
  $event = $this->service->getCalendarEventEntry($eventUri);
  $when = $this->service->newWhen();
  $when->startTime = $date_debut; 
  $when->endTime = $date_fin;
  $event->when = array($when);
  $eventNew = $event->save();
 }
 
 function update_evenement_titre($eventUri,$new_title)
 {
  $event = $this->service->getCalendarEventEntry($eventUri);
  $event->title = $this->service->newTitle($new_title);
  $eventNew = $event->save();
 }
 
 function delete_evenement($eventUri)
 {
  $event = $this->service->getCalendarEventEntry($eventUri);
  $event->delete();
 }

}
?>
0
Tes inclusions :
require_once './Zend/Loader.php';
Zend_Loader::loadClass('Zend_Gdata');
Zend_Loader::loadClass('Zend_Gdata_AuthSub');
Zend_Loader::loadClass('Zend_Gdata_ClientLogin');
Zend_Loader::loadClass('Zend_Gdata_Calendar');


$ga = new google_agenda("user[@]gmail.com",$mdp_gmail);


Puis tu crées ton evt :
$ga->create_evenement('Titre','Descriptif','Date_format_sql','date_format_sql');


Tu feras attention ma fonction peremt d'ajouter des evt sur une journée uniquement.
Mais en y regardant de plus pret ca devrait marcher :)
0
delaville81 Messages postés 196 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 2 juin 2024
12 mars 2015 à 15:36
Cher samyb2313,
Merci de ta réponse.
J'ai testé ton code mais il me renvoi :
Fatal error: Uncaught exception 'Zend_Gdata_App_AuthException' with message 'Authentication with Google failed ...............{main} thrown in /home/instantdn/www/ppe/library/Zend/Gdata/ClientLogin.php on line 175

Je ne comprends pas vraiment.
Peux tu me secourir
Merci d'avance
0
Apres avoir verifié les comptes que j'utilise on doit cocher rendre public cet agenda tu peux vérifier dans les paramètres de partages de l'agenda Google.
0
delaville81 Messages postés 196 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 2 juin 2024
12 mars 2015 à 17:18
J'ai fait comme tu m'a dis. C'est la même chose...
Je ne sais pas quoi faire de plus
0
demain je te file le repertoire zend que j'utilise !
0
Essaie :
quand tu es connecté à google tu vas sur cette page :
https://www.google.com/settings/security/lesssecureapps?pli=1
et tu mets
Accès pour les applications moins sécurisées : Activer
0
Et dans le login tu met login[arobase]gmail.com ?
0
delaville81 Messages postés 196 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 2 juin 2024
13 mars 2015 à 10:34
Cher samyb2313,
J'ai fait comme tu m'a dit
J'ai toujours :
Fatal error: Uncaught exception 'Zend_Gdata_App_AuthException' with message 'Authentication with Google failed. Reason: BadAuthentication' in ....... Zend/Gdata/ClientLogin.php on line 175

Mon code

<?php
require_once 'Zend/Loader.php';
Zend_Loader::loadClass('Zend_Gdata');
Zend_Loader::loadClass('Zend_Gdata_AuthSub');
Zend_Loader::loadClass('Zend_Gdata_ClientLogin');
Zend_Loader::loadClass('Zend_Gdata_Calendar');

$mdp_gmail = 'xxxxxxxx';
$ga = new google_agenda("mon_mogin[@]gmail.com",$mdp_gmail);
//Puis tu crées ton evt :
$ga->create_evenement('Titre','Descriptif','2015-03-12T00:00:00.000-07:00','2015-03-12T00:00:00.000-08:00');

class google_agenda
{
var $mail;
var $password;
var $service;
var $client;

function __construct($mail_,$password_)
{
$this->mail = $mail_;
$this->password = $password_;
$serviceName = Zend_Gdata_Calendar::AUTH_SERVICE_NAME;
$this->client = Zend_Gdata_ClientLogin::getHttpClient($this->mail, $this->password, $serviceName);
$this->service = new Zend_Gdata_Calendar($this->client);
}

function create_evenement($titre,$descriptif,$date_debut,$date_fin)
{
//creation de l'evenement
$event= $this->service->newEventEntry();
$event->title = $this->service->newTitle($titre);
$event->content = $this->service->newContent($descriptif);
//creation du moment
$when = $this->service->newWhen();
$when->startTime = $date_debut; // 8th July 2010, 4:30 pm (+5:30 GMT)
$when->endTime = $date_fin;
//on ajoute le moment à l'evenement
$event->when = array($when);
//ajout de l'evenement au calendrier
$newEvent = $this->service->insertEvent($event);
// on renvoie l'id de l'evenement...
return $newEvent->id->text;
}

function update_evenement_date($eventUri,$date_debut,$date_fin)
{
$event = $this->service->getCalendarEventEntry($eventUri);
$when = $this->service->newWhen();
$when->startTime = $date_debut;
$when->endTime = $date_fin;
$event->when = array($when);
$eventNew = $event->save();
}

function update_evenement_titre($eventUri,$new_title)
{
$event = $this->service->getCalendarEventEntry($eventUri);
$event->title = $this->service->newTitle($new_title);
$eventNew = $event->save();
}

function delete_evenement($eventUri)
{
$event = $this->service->getCalendarEventEntry($eventUri);
$event->delete();
}
}
?>

0
mpmp93 Messages postés 6648 Date d'inscription mercredi 13 avril 2011 Statut Membre Dernière intervention 28 septembre 2015 1 339
16 mars 2015 à 11:47
Bonjour,

Ici:

$mdp_gmail = 'xxxxxxxx';
$ga = new google_agenda("mon_mogin[@]gmail.com",$mdp_gmail);


avez-vous bien entré le bon mot de passe et adresse mail?

Le message d'erreur indique un problème d'authentification, donc soit une mauvaise adresse mail, soit un mauvais mot de passe...

Cdlt
0
delaville81 Messages postés 196 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 2 juin 2024 > mpmp93 Messages postés 6648 Date d'inscription mercredi 13 avril 2011 Statut Membre Dernière intervention 28 septembre 2015
16 mars 2015 à 12:16
Cher mpmp93,
J'ai bien vérifié et même saisie le login et le mot de passe, c'est toujours pareil, le même message d'erreur.
0
mpmp93 Messages postés 6648 Date d'inscription mercredi 13 avril 2011 Statut Membre Dernière intervention 28 septembre 2015 1 339
16 mars 2015 à 13:28
Est-ce que sur votre compte Google vous avez la validation en deux étapes?

Si oui, cette validation est incompatible avec le script que vous voulez utiliser.

Pour que ça marche, il faut une validation par application:
https://support.google.com/accounts/answer/185833

A+
0
delaville81 Messages postés 196 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 2 juin 2024 > mpmp93 Messages postés 6648 Date d'inscription mercredi 13 avril 2011 Statut Membre Dernière intervention 28 septembre 2015
16 mars 2015 à 14:13
En cliquant sur le lien, la page me dit : "Le paramètre que vous recherchez n'est pas disponible pour votre compte."
Je peux accéder à mon profil c'est tout.
Une Idée ?

Delaville
0
mpmp93 Messages postés 6648 Date d'inscription mercredi 13 avril 2011 Statut Membre Dernière intervention 28 septembre 2015 1 339 > delaville81 Messages postés 196 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 2 juin 2024
16 mars 2015 à 14:25
Avez-vous activé la validation en deux étapes de votre compte google?
0