2014-02-19 95 views
0

我正在使用PHP日历的PHP API,我以前使用过Zend库,并且正在升级到API V3我下载了Git Hub客户端库v1.0。 我已完成oAuth 2,并将数据库中的Refresh令牌存储起来。我可以连接并将事件写入Google日历,主要归功于StackOverflow的贡献者。谢谢无法删除使用php api的Google日历中的事件

我的问题是,我不能删除事件。我正在与OAUTH 2连接和检索事件ID然而

$service->events->delete('primary', $event->getId()); 

这生成致命错误:未捕获的异常“Google_IO_Exception”与消息“HTTP错误:无法连接:‘0’”在C:\瓦帕\ WWW \新的名录解码器\ src \ Google \ IO \ Stream.php在线128

我已经找到了高和低,并找不到解决方案。请帮忙谢谢

编辑解决 由于艾米莉的伟大建议,这个问题已解决 解决方案从GitHub下载最新的API作为GZIP的问题已经排序。 作为一个感兴趣的问题,我最初在congig.php中注释掉了GZIP,这个问题已经解决了,但是之后我失去了性能优势,然后新的库对它进行了排序。 经验教训。计算器用户非常客气的给自己的时间,并总是试图编辑的最新的软件 END

<?php 
    /// This works 

    session_start(); 

    set_include_path("src/" . PATH_SEPARATOR . get_include_path()); 
    require_once 'Google/Client.php'; 
    require_once 'Google/Service/Calendar.php'; 
    require_once 'account/dbc.php'; 



    $client_id = 'XXXXXXXXXX.apps.googleusercontent.com'; 
    $client_secret = 'XXXXXXXXXXX'; 
    $redirect_uri = 'http://localhost:80/new-roster-decoder/account/GoogleoAuth.php'; 


    $client = new Google_Client(); 
    $client->setClientId($client_id); 
    $client->setClientSecret($client_secret); 
    $client->setRedirectUri($redirect_uri); 
    $client->addScope("https://www.googleapis.com/auth/calendar"); 
    $client->setAccessType('offline'); 


    $users_rs_settings = mysqli_query($link,"select * from users WHERE id = 118"); 
    $users_array = mysqli_fetch_array($users_rs_settings); 

    $refresh_token = $users_array['refresh_token']; //2010-04-06 
    $client->refreshToken($refresh_token); 

    $service = new Google_Service_Calendar($client); 

    $event = new Google_Service_Calendar_Event(); 
    $event->setSummary('Positioning TX'); 
    $event->setLocation('BRS-LGW'); 

    $start = new Google_Service_Calendar_EventDateTime(); 
    $start->setDateTime('2014-02-19T14:00:00.000-00:00'); 
    $start->setTimeZone('Europe/London'); 
    $event->setStart($start); 
    $end = new Google_Service_Calendar_EventDateTime(); 
    $end->setDateTime('2014-02-19T17:25:00.000-00:00'); 
    $end->setTimeZone('Europe/London'); 
    $event->setEnd($end); 
    // insert ext properties 
    $rdname = "RosterDecoderID"; 
    $rdvalue = 1; 

    $extendedProperties = New Google_Service_Calendar_EventExtendedProperties(); 
    $extendedProperties->setPrivate(array($rdname=>$rdvalue)); 
    $event->setExtendedProperties($extendedProperties); 

    // end of insert ext properties 

    $createdEvent = $service->events->insert('primary', $event); 
    echo $createdEvent->getId()."\n\n"; 

    $_SESSION['access_token'] = $client->getAccessToken(); 
    var_dump($_SESSION['access_token']); 
    var_dump($event); 

    $minCheck = date(DATE_ATOM, mktime(0, 0, 0, date("m"), date("d"), date("Y"))); 
    $maxCheck = date(DATE_ATOM, mktime(0, 0, 0, date("m"), (date("d")+1), date("Y"))); 

    $optParams = array('privateExtendedProperty' => 'RosterDecoderID=1','timeMin' => $minCheck, 'timeMax' => $maxCheck); 
    $events = $service->events->listEvents('primary', $optParams); 





    while(true) { 
     foreach ($events->getItems() as $event) { 
     $eventID = $event->getId(); 

    ////////////////////////////////////////////////////////// 
    //This bit throws an error 
     $service->events->delete('primary', $event->getId()); 
    ///////////////////////////////////////////////////////// 
    // The error is 
    // Fatal error: Uncaught exception 'Google_IO_Exception' with message 'HTTP Error: Unable to connect: '0'' in C:\wamp\www\new-roster-decoder\src\Google\IO\Stream.php on line 128 


     echo $event->getSummary(); 
     echo $event->getId()."\n\n"; 
     } 
    } 

    ?> 
+0

嘿,这看起来可能与PHP客户端库。看看这个线程,看看它是否有帮助! http://stackoverflow.com/questions/21428180/google-analytics-api-v3-http-error-unable-to-connect-on-live-server-localhos – Emily

回答

0

我能够从谷歌日历删除事件..

使用私钥文件从开发者处获取安慰。

富勒更多信息检查此链接

What is the Google API password for the OAuth PKCS p12 private key?

how-where-to-obtain-a-p12-key-file-from-the-google-developers-console

下面

的代码请

const KEY_FILE = '<<some location on server>>/xxx-65454f656a-xxx-560265d-privatekey.p12'; 
// this is my private key file location, make sure it accessible 


try { 
      $key = file_get_contents(KEY_FILE);  
      $auth = new \Google_Auth_AssertionCredentials(
        SERVICE_ACCOUNT_NAME, 
        array('https://www.googleapis.com/auth/calendar'), 
        $key); 
      $auth->sub = $calendarId; 
      $client = new \Google_Client(); 
      $client->setAssertionCredentials($auth); 
      $client->setApplicationName("Parabola V2"); 
      $client->setClientId(CLIENT_ID); 
      $service = new \Google_Service_Calendar($client); 
      $service->events->delete($calendarId, $eventId);    
     } catch (\Exception $e) { 
      echo "Exception while deleting event :- ".$e->getMessage(); 
      return null; 
     } 
相关问题