Zend Gdata calendar
delaville81
Messages postés
209
Statut
Membre
-
delaville81 Messages postés 209 Statut Membre -
delaville81 Messages postés 209 Statut Membre -
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
Je fait appel aux fonctions dans fonction.php :
getCurrentUrl
getAuthSubHttpClient
et
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
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:
- Zend Gdata calendar
- Google calendar pc - Télécharger - Agendas & Calendriers
- Synchroniser google calendar et outlook - Guide
- I calendar - Télécharger - Organisation
- Zend studio - Télécharger - Divers Web & Internet
- Click tray calendar - Télécharger - Agendas & Calendriers
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();
}
}
?>
Tes inclusions :
Puis tu crées ton evt :
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 :)
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 :)
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
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
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
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();
}
}
?>
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+
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+