简体   繁体   中英

Need Help Migrating php script with google calendar api v2 to v3

Hi im trying to migrate my php script v2 api to v3 but i dont know what to do...

I readed the Google Calendar API Version 3.0 Migration Guide, but dont know if will work with zend_gdata or what to do..

 <?php } else { // load classes 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_Http_Client'); // connect to service $title = $_POST['ACTUACION']."/".$_POST['NOMBRE']."/".$_POST['TELEFONO']; $title = strtoupper($title); $where = $_POST['MUNICIPIO']."/".$_POST['DIRECCION']; $where = strtoupper($where); $description = $_POST['CAPTACION']."/".$_POST['ESTADO']."/".$_POST['PROCEDENCIA'].$_POST['PROCEDENCIA2']."/".$_POST['REFPROCEDENCIA']; $description = strtoupper($description); $gcal = Zend_Gdata_Calendar::AUTH_SERVICE_NAME; $user = $_POST['email']; $pass = $_POST['pass']; $client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, $gcal); $gcal = new Zend_Gdata_Calendar($client); // validate input if (empty($title)) { die('ERROR: Missing title'); } if (!checkdate($_POST['sdate_mm'], $_POST['sdate_dd'], $_POST['sdate_yy'])) { die('ERROR: Invalid start date/time'); } if (!checkdate($_POST['sdate_mm'], $_POST['sdate_dd'], $_POST['sdate_yy'])) { die('ERROR: Invalid start date/time'); } if (($_POST['sdate_hh']) < ($_POST['edate_hh'])){ die('ERROR: Hora de fin incorrecta'); } $horas_inicio = $_POST['hora_inicio']; list ($sdate_hh, $sdate_ii) = split('[:]', $horas_inicio); $horas_fin = $_POST['hora_fin']; list ($edate_hh, $edate_ii) = split('[:]', $horas_fin); $title = htmlentities($title); $start = date(DATE_ATOM, mktime($sdate_hh,$sdate_ii, 0, $_POST['sdate_mm'], $_POST['sdate_dd'], $_POST['sdate_yy'])); $end = date(DATE_ATOM, mktime($edate_hh, $edate_ii, 0, $_POST['sdate_mm'], $_POST['sdate_dd'], $_POST['sdate_yy'])); // construct event object // save to server try { $event = $gcal->newEventEntry(); $event->title = $gcal->newTitle($title); $event->where = array($gcal->newWhere($where)); $event->content = $gcal->newContent($description); $when = $gcal->newWhen(); $when->startTime = $start; $when->endTime = $end; $event->when = array($when); $gcal->insertEvent($event); } catch (Zend_Gdata_App_Exception $e) { echo "Error: " . $e->getResponse(); } echo 'CITA CREADA!</br>'; echo "<form method=\\"post\\" action=\\"calendar.php\\">"; $user = $_POST['email']; $pass = $_POST['pass']; echo "<input name=\\"email\\" type=\\"hidden\\" value=".$user."\\"/>"; echo "<input name=\\"pass\\" type=\\"hidden\\" value=".$pass."\\"/>"; echo "<input type=\\"submit\\" value=\\"INTRODUCIR MAS CITAS\\" />"; echo "</form>"; echo '<a href="https://www.google.com/calendar" target="_blank">Acceder al Calendario</a>'; } ?> 

Here is my code, and with this, I insert all the events of the calendar, how can i modify for work with google calendar v3 key?

Thanks in advance and sorry my english.

You should start by following the First App steps in setting up V3 here: https://developers.google.com/google-apps/calendar/firstapp

Then continue by downloading the PHP client library from the Downloads section: https://developers.google.com/google-apps/calendar/downloads

In the end follow the example in the insert reference: https://developers.google.com/google-apps/calendar/v3/reference/events/insert but replace all "Event"-related types with "Google_Service_Calendar_Event" as the newer client libraries changed the names.

I finally got this stuff to start working myself and a lot of searching. I was also using Zend before. There is a very good website at Daimto.com where you can see a bunch of tutorials. Here is the code that worked for me to add an event using the code form Daimto.com and adding code for adding an event in the body. Remember you need ot have the service email added to the share of your google calendar too!

<?php
session_start();        
require_once './google-api-php-client/src/Google/Client.php';
require_once './google-api-php-client/src/Google/Service/Calendar.php';     

$client_id = '6846057_YOUR_CLIENT_ID_HERE_pg3q8r6.apps.googleusercontent.com';
$Email_address = '68460_YOUR_SERVICE_EMAIL_HERE_developer.gserviceaccount.com';  
$key_file_location = '_KEY_FILE_LOCATION_HERE_8.p12';       
$client = new Google_Client();      
$client->setApplicationName("_APP_NAME_HERE_");
$key = file_get_contents($key_file_location);    
// seproate additional scopes with a comma   
$scopes ="https://www.googleapis.com/auth/calendar";    
$cred = new Google_Auth_AssertionCredentials(    
  $Email_address,       
    array($scopes),     
    $key         
    );      
$client->setAssertionCredentials($cred);
if($client->getAuth()->isAccessTokenExpired()) {        
   $client->getAuth()->refreshTokenWithAssertion($cred);       
}       
$service = new Google_Service_Calendar($client);    

?>

<html><body>

<?php

    //
    $event = new Google_Service_Calendar_Event();
    $event->setSummary('Event 2');
    $event->setLocation('Somewhere');
    $start = new Google_Service_Calendar_EventDateTime();
    $start->setDateTime('2015-06-22T19:00:00.000+01:00');
    $start->setTimeZone('Europe/London');
    $event->setStart($start);
    $end = new Google_Service_Calendar_EventDateTime();
    $end->setDateTime('2015-06-22T19:25:00.000+01:00');
    $end->setTimeZone('Europe/London');
    $event->setEnd($end);
    //
     $calendar_id = "nm_GOOGLE_CAL_ID_HERE_@group.calendar.google.com";
    //
    $new_event = null;
    //
    try {
        $new_event = $service->events->insert($calendar_id, $event);
        //
        $new_event_id= $new_event->getId();
    } catch (Google_ServiceException $e) {
        syslog(LOG_ERR, $e->getMessage());
    }
    //
    $event = $service->events->get($calendar_id, $new_event->getId());
    //
    if ($event != null) {
        echo "Inserted:";
        echo "EventID=".$event->getId();
        echo "Summary=".$event->getSummary();
        echo "Status=".$event->getStatus();
    }    

?>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM