2014-12-02 36 views
0

我正在使用Google API PHP客戶端向我的日曆添加事件。 ID被插入&後成功返回當我使用它顯示總結&一切正確&因某種原因ID,該事件被顯示在我的日曆通過Google API添加的事件在日曆中未顯示PHP客戶端

我使用的服務帳戶憑據獲取該事件。有什麼可以啓用這個工作嗎?

這裏是我的代碼

session_start(); 
    require dirname(__FILE__).'/google-api-php-client-master/autoload.php'; 

    $client_id = '<client ID>'; 
    $service_account_name = '<Service Account Name>'; 
    $key_file_location = dirname(__FILE__).'/API-Project-96c2a9122085.p12'; 


    if (!strlen($service_account_name) || !strlen($key_file_location)) { 
     echo missingServiceAccountDetailsWarning(); 
    } 


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

    $service = new Google_Service_Calendar($client); 


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

    $key = file_get_contents($key_file_location); 

    $cred = new Google_Auth_AssertionCredentials($service_account_name,array('https://www.googleapis.com/auth/calendar'),$key); 

    $client->setAssertionCredentials($cred); 

    if ($client->getAuth()->isAccessTokenExpired()) { 
     $client->getAuth()->refreshTokenWithAssertion($cred); 
    } 

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

    $event = new Google_Service_Calendar_Event(); 
    $event->setSummary("WHY IS THIS NOT WOKING?"); 
    $start = new Google_Service_Calendar_EventDateTime(); 

    $start->setDateTime(date('Y-m-d\TH:i:s',strtotime('2014-12-24 10:00:00'))); 
    $start->setTimeZone('Australia/Melbourne'); 
    $event->setStart($start); 
    $end = new Google_Service_Calendar_EventDateTime(); 
    $end->setDateTime(date('Y-m-d\TH:i:s',strtotime('2014-12-26 12:00:00'))); 
    $end->setTimeZone('Australia/Melbourne'); 
    $event->setEnd($end); 
    $newEvent = $service->events->insert('primary', $event); 
    $newEvent->getId(); 
    $event = $service->events->get('primary', $newEvent->getId()); 
    echo '<pre>'; print_r($event); echo '</pre>'; 

回答

0

隨着新Google_Client API,你需要共享日曆給自己。

$scope = new Google_Service_Calendar_AclRuleScope(); 
$scope->setType('user'); 
$scope->setValue('Your Email Goes Here'); 

$rule = new Google_Service_Calendar_AclRule(); 
$rule->setRole('owner'); 
$rule->setScope($scope); 

$result = $service->acl->insert('primary', $rule); 

讓我知道你是否仍然有問題。

+0

非常感謝,這個伎倆。 – user3339988 2014-12-03 02:50:26

相關問題