簡體   English   中英

需要幫助使用Google Calendar API V2將PHP腳本遷移到V3

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

嗨,我試圖將我的PHP腳本v2 api遷移到v3,但我不知道該怎么辦...

我已閱讀《 Google Calendar API 3.0版遷移指南》,但不知道它是否可以與zend_gdata一起使用或如何使用。

 <?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>'; } ?> 

這是我的代碼,並以此插入日歷的所有事件,如何修改以使用Google Calendar v3鍵?

在此先感謝您,對不起我的英語。

您應首先在此處設置V3時遵循“第一應用”步驟: https : //developers.google.com/google-apps/calendar/firstapp

然后繼續從“下載”部分下載PHP客戶端庫: https : //developers.google.com/google-apps/calendar/downloads

最后,按照插入引用中的示例進行操作: https : //developers.google.com/google-apps/calendar/v3/reference/events/insert,但將所有與“事件”相關的類型替換為“ Google_Service_Calendar_Event”客戶端庫更改了名稱。

我終於得到了這些東西,開始自己工作,並進行了大量的搜索。 我以前也使用過Zend。 在Daimto.com上有一個非常不錯的網站,您可以在其中看到很多教程。 這是對我有用的代碼,它使用代碼形式Daimto.com添加事件並在體內添加用於添加事件的代碼。 記住,您還需要將服務電子郵件添加到您的Google日歷共享中!

<?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();
    }    

?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM