n° 185
Maggio/Giugno 2013
Maggio 22, 2013, 01:25:43 pm *
Benvenuto! Accedi o registrati.
Hai dimenticato l'e-mail di attivazione?

Accesso con nome utente, password e durata della sessione
Notizia:
 
   Indice   Linux Windows Techassistance Gameassistance videogame hardware Aiuto Ricerca Agenda Downloads Accedi Registrati  

* Messaggi recenti
Messaggi recenti
Pagine: [1]   Vai giù
  Stampa  
Autore Discussione: google api calendario  (Letto 772 volte)
0 utenti e 1 Utente non registrato stanno visualizzando questa discussione.
bigbet
Newbie
*

Karma: +0/-0
Scollegato Scollegato

Messaggi: 8


Mostra profilo E-mail
« inserita:: Febbraio 18, 2013, 03:29:07 pm »

Ciao
per sincronizzare il mio database con il calendario di google vorrei usare il codice di seguito che ho trovato googolando. Il problema è che non mi funziona. Se lo inserisco nel mio server web e ci punto il browser il risultato è una pagina bianca a prescindere da cosa metto al posto dei Che?!??.
Devo avere qualche accortezza nella conf del xampp?
Mi sapete dire dove reperire il setRedirectUri e a cosa serve?
Inoltre sull'ultimo numero di IOPROGRAMMO c'è un interessante articolo su googledrive in cui si fa riferimento ad un argomento già trattato sull'accesso alle Api di google.  In quale numero è stato spiegato questo cruciale passaggio?

Grazie moltissime


<?php
require_once 'gestione/api/google-api-php-client/src/apiClient.php';
require_once 'gestione/api/google-api-php-client/src/contrib/apiCalendarService.php';
session_start();

 
 $client = new apiClient();
 $client->setApplicationName("calendarioprova");
 $client->setClientId('miaemailgoogle@google.it');
 $client->setClientSecret('pwdemailgoogle');
 $client->setRedirectUri('Che?!?Che?!?');
 $client->setDeveloperKey('AIzaxxxxx26M0ob-SJwxxxx3-xxxxnCDC-xxxxxx');
 
$cal = new apiCalendarService($client);
if (isset($_GET['logout'])) {
  unset($_SESSION['token']); 
}

if (isset($_GET['code'])) {
  $client->authenticate();
  $_SESSION['token'] = $client->getAccessToken();
  header('Location: http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']);
}

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


  $calList = $cal->calendarList->listCalendarList();   
   
  print "********** ma connexion est OK ******************<br>";   
   
   
  //******************************************************* TEST ****

$event = new Event();
$event->setSummary('titre de l'evenement');
$event->setLocation('La Rochelle');
$service = new apiCalendarService($client);

$start = new EventDateTime();
$start->setDateTime('2013-02-02T10:00:00');
$event->setStart($start);

$end = new EventDateTime();
$end->setDateTime('2013-02-02T13:25:00');
$event->setEnd($end);

$attendee1 = new EventAttendee();
$attendee1->setEmail('xxxx@xxxx.it');
$attendees = array($attendee1);
$event->attendees = $attendees;

$createdEvent = $service->events->insert( $client, $event);

echo $createdEvent->getId();



  $_SESSION['token'] = $client->getAccessToken();

else {
  $authUrl = $client->createAuthUrl();
  print "<a class='login' href='$authUrl'>Connect Me!</a>";
}


?>   
Registrato
bigbet
Newbie
*

Karma: +0/-0
Scollegato Scollegato

Messaggi: 8


Mostra profilo E-mail
« Risposta #1 inserita:: Febbraio 18, 2013, 09:15:03 pm »

ho provato anche questo ma nulla


<?php
require_once '../../src/Google_Client.php';
require_once '../../src/contrib/Google_CalendarService.php';
session_start();

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

// Visit https://code.google.com/apis/console?api=calendar to generate your
// client id, client secret, and to register your redirect uri.
$client->setClientId('xxxxx.apps.googleusercontent.com');
$client->setClientSecret('-xmxxxxxx__xsx5cbxxxxx2Zs');
$client->setRedirectUri('http://www.xxxxxxx.xxxx');
$client->setDeveloperKey('xxxxxxxxxxx-Sxxxxxx3-pxxxxxxC-3xxxx8');
$cal = new Google_CalendarService($client);
if (isset($_GET['logout'])) {
  unset($_SESSION['token']);
}

if (isset($_GET['code'])) {
  $client->authenticate($_GET['code']);
  $_SESSION['token'] = $client->getAccessToken();
  header('Location: http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']);
}

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

if ($client->getAccessToken()) {
  $calList = $cal->calendarList->listCalendarList();
  print "<h1>Calendar List</h1><pre>" . print_r($calList, true) . "</pre>";


$_SESSION['token'] = $client->getAccessToken();
} else {
  $authUrl = $client->createAuthUrl();
  print "<a class='login' href='$authUrl'>Connect Me!</a>";
Registrato
MatrixTeo
Jr. Member
**

Karma: +1/-0
Scollegato Scollegato

Messaggi: 65



Mostra profilo WWW
« Risposta #2 inserita:: Febbraio 19, 2013, 05:47:26 pm »

Il codice è abbastanza articolato, se riesci a fare un po' di debug e dirci a quali righe sorgono i problemi ti potremmo aiutare meglio Sorriso
Registrato
bigbet
Newbie
*

Karma: +0/-0
Scollegato Scollegato

Messaggi: 8


Mostra profilo E-mail
« Risposta #3 inserita:: Febbraio 23, 2013, 05:42:39 pm »

ho come risultato una schermata bianca non c'è molto debug  che sia riuscito a fare.
L'unica possibilità di venirne fuori è che qualcuno che ci è riuscito mi dia qualche dritta.
A me sembra una funzione molto utile, strano che nessuno si sia imbattuto in questa api
Registrato
bertolottipf
Full Member
***

Karma: +4/-4
Scollegato Scollegato

Messaggi: 322


Mostra profilo E-mail
« Risposta #4 inserita:: Febbraio 23, 2013, 06:30:40 pm »

Il mio consiglio è quello di andare all'indirizzo https://code.google.com/p/google-api-php-client/ e scaricare gli esempi e adattarli al tuo caso.
A mio giudizio, comunque, così su due piedi, mi verrebbero in mente due o tre cose...
Prima di tutto verificherei che i require_once vadano a buon fine aggiungendo per esempio nei file aggiunti una riga come questa :
echo "<script>console.log('file xxx.php incluso correttamente')</script>";
In modo tale da poter vedere nei log se funziona.
Registrato
bigbet
Newbie
*

Karma: +0/-0
Scollegato Scollegato

Messaggi: 8


Mostra profilo E-mail
« Risposta #5 inserita:: Febbraio 26, 2013, 01:44:35 pm »

intanto grazie per le risposte.
Oggi avevo un po di tempo e ho fatto un po di progressi vi posto il nuovo codice (quello precedente contevena un monte di errori  Indeciso ...). Praticamente credo di aver risolto il problema della connessione ma ora non riesco a creare l'evento sul calendario. Ricevo questo errore:
Fatal error: Class 'Event' not found in C:\xampp\htdocs\test1.php on line 48 (In grassetto nel codice di seguito)

<?php
require_once 'Google_Client.php';
require_once 'Google_CalendarService.php';
session_start();

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

$client->setClientId('xxxxxxxx.apps.googleusercontent.com');
$client->setClientSecret('-xxxxxxx__xxxxxxxxx');
$client->setRedirectUri('http://localhost/test1.php');
//$client->setDeveloperKey('xxxxxxxxxx-xxxxxxxx-xxxxxxxxxx-xxxxxxxx');
$cal = new Google_CalendarService($client);
 
 
 $service = new Google_CalendarService($client);

$cal = new Google_CalendarService($client);
if (isset($_GET['logout'])) {
  unset($_SESSION['token']);
}

if (isset($_GET['code'])) {
  $client->authenticate();
  $_SESSION['token'] = $client->getAccessToken();
  header('Location: http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']);
}

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


  $calList = $cal->calendarList->listCalendarList();   
 
  print "********** ma connexion est OK ******************<br>"; 
 

   
  //******************************************************* TEST ****

$event = new Event();
$event->setSummary ('titre de evenement');
$event->setLocation('La Rochelle');


$start = new EventDateTime();
$start->setDateTime('2013-02-05T10:01:00');
$event->setStart($start);

$end = new EventDateTime();
$end->setDateTime('2013-02-05T13:12:00');
$event->setEnd($end);

$attendee1 = new EventAttendee();
$attendee1->setEmail('xxxxxxxxxx@xxxxxxxx.it');
$attendees = array($attendee1);
$event->attendees = $attendees;

$createdEvent = $service->events->insert( $client, $event);

echo $createdEvent->getId();



  $_SESSION['token'] = $client->getAccessToken();
}
else {
  $authUrl = $client->createAuthUrl();
  print "<a class='login' href='$authUrl'>Connect Me!</a>";
}


?>
Registrato
bigbet
Newbie
*

Karma: +0/-0
Scollegato Scollegato

Messaggi: 8


Mostra profilo E-mail
« Risposta #6 inserita:: Febbraio 26, 2013, 03:05:35 pm »

risolto anche questo, ho scoperto gogolando che c'è un errore nella documentazione. Non esiste la classe event ma Google_Event.
Ora ho un ulteriore problema (spero l'ultimo perchè unnepossopiù!!!)


Fatal error: Uncaught exception 'Google_ServiceException' with message 'Error calling POST https://www.googleapis.com/calendar/v3/calendars/%5Bcalendar%20id%5D/events: (404) Not Found' in C:\xampp\htdocs\io\Google_REST.php:66 Stack trace: #0 C:\xampp\htdocs\io\Google_REST.php(36): Google_REST::decodeHttpResponse(Object(Google_HttpRequest)) #1 C:\xampp\htdocs\service\Google_ServiceResource.php(177): Google_REST::execute(Object(Google_HttpRequest)) #2 C:\xampp\htdocs\Google_CalendarService.php(494): Google_ServiceResource->__call('insert', Array) #3 C:\xampp\htdocs\test1.php(59): Google_EventsServiceResource->insert('[calendar id]', Object(Google_Event)) #4 {main} thrown in C:\xampp\htdocs\io\Google_REST.php on line 66

 
Registrato
bertolottipf
Full Member
***

Karma: +4/-4
Scollegato Scollegato

Messaggi: 322


Mostra profilo E-mail
« Risposta #7 inserita:: Febbraio 26, 2013, 04:12:27 pm »

Codice:
Event event = new Event();

event.setSummary("Appointment");
event.setLocation("Somewhere");

ArrayList<EventAttendee> attendees = new ArrayList<EventAttendee>();
attendees.add(new EventAttendee().setEmail("attendeeEmail"));
// ...
event.setAttendees(attendees);

Date startDate = new Date();
Date endDate = new Date(startDate.getTime() + 3600000);
DateTime start = new DateTime(startDate, TimeZone.getTimeZone("UTC"));
event.setStart(new EventDateTime().setDateTime(start));
DateTime end = new DateTime(endDate, TimeZone.getTimeZone("UTC"));
event.setEnd(new EventDateTime().setDateTime(end));

Event createdEvent = service.events().insert('primary', event).execute();

System.out.println(createdEvent.getId());

Fonte: https://developers.google.com/google-apps/calendar/v3/reference/events/insert
Registrato
bigbet
Newbie
*

Karma: +0/-0
Scollegato Scollegato

Messaggi: 8


Mostra profilo E-mail
« Risposta #8 inserita:: Febbraio 26, 2013, 08:56:42 pm »

con event al posto di google_event mi da errore sulla classe, ed effettivamente ho controllato e non esiste. Per me è sbagliata la guida.
Cmq come dicevo ho risolto (almeno credo) quel problema.
Adesso mi da errore quando deve "scrivere"  sul calendario. Ho già provato a ricreare le chiavi di accesso con esito negativo. Forse è un problema di permessi. Per questo errore non ho trovato molto su google.
Registrato
bertolottipf
Full Member
***

Karma: +4/-4
Scollegato Scollegato

Messaggi: 322


Mostra profilo E-mail
« Risposta #9 inserita:: Febbraio 26, 2013, 10:18:21 pm »

https://github.com/abeyang/Google-Calendar-PHP e http://www.ibm.com/developerworks/web/library/x-googleclndr/index.html?ca=drs-
Registrato
bigbet
Newbie
*

Karma: +0/-0
Scollegato Scollegato

Messaggi: 8


Mostra profilo E-mail
« Risposta #10 inserita:: Marzo 07, 2013, 05:13:25 pm »

non ne levo le gambe e per ora accantono il progetto.
Speriamo che decidano di farci un bell'articolino sul prossimo numero  Linguaccia

edit:
credo di aver risolto con questo codice scovato su google..
ora non mi resta che integrarlo nel mio gestionale.

Codice:
<?php
require_once '/google-api-php-client/src/Google_Client.php';
require_once 
'google-api-php-client/src/contrib/Google_CalendarService.php';
 
session_start();
 
$client = new Google_Client();
$client->setApplicationName('xxxxxx');
$client->setClientId('xxxxxxxx');
$client->setClientSecret('xxxxxxxx');
$client->setRedirectUri('http://tonsite/cette_page.php');
$client->setScopes('http://www.google.com/calendar/feeds/');
 
if (isset(
$_GET['code'])) {
  
$client->authenticate();
  
$_SESSION['token'] = $client->getAccessToken();
  
$redirect 'http://' $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
  
header('Location: ' filter_var($redirectFILTER_SANITIZE_URL));
}
 
if (isset(
$_SESSION['token'])) {
  
$client->setAccessToken($_SESSION['token']);
}
 
if (
$client->getAccessToken()) {
$_SESSION['token'] = $client->getAccessToken();
$cal = new Google_CalendarService($client);
$event = new Google_Event();
$event->setSummary('Lire la doc');
$event->setLocation('Maison');
$start = new Google_EventDateTime();
$start->setDateTime('2013-02-20T07:00:00.000+01:00');
$event->setStart($start);
$end = new Google_EventDateTime();
$end->setDateTime('2013-02-20T22:00:00.000+01:00');
$event->setEnd($end);
try {
$createdEvent $cal->events->insert('NOM_DU_CALENDRIER'$event);
echo 'Statut : ' $createdEvent['status'];
}
catch (Exception $e) {
echo 'Erreur : ',  $e->getMessage(), "\n";
}
} else {
$authUrl header('Location: ' $client->createAuthUrl());
}
Registrato
bigbet
Newbie
*

Karma: +0/-0
Scollegato Scollegato

Messaggi: 8


Mostra profilo E-mail
« Risposta #11 inserita:: Marzo 08, 2013, 04:58:16 pm »

altro quesito
ora che riesco ad inserire gli eventi sul calendario vorrei anche poterli modificare/cancellare.
A tale scopo ci sono due comandi update/delete che però richiedono un parametro a me ignoto "eventid".
Sapete come posso reperirlo?
Registrato
bertolottipf
Full Member
***

Karma: +4/-4
Scollegato Scollegato

Messaggi: 322


Mostra profilo E-mail
« Risposta #12 inserita:: Marzo 08, 2013, 11:39:12 pm »

io inizierei testando http://blog.josedasilva.net/zend-framework-how-to-interact-with-google-calendar-part-1/ che è scaricabile e poi continuerei con http://blog.josedasilva.net/zend-framework-how-to-interact-with-google-calendar-part-1/
Registrato
Pagine: [1]   Vai su
  Stampa  
 
Vai a:  

Copyright © 2011 Edizioni Master SpA. p.iva : 02105820787

Tutti i diritti di proprietà letteraria e artistica riservati. - Privacy



Links to Page