通过Google API PHP客户端添加的事件未显示在日历中 [英] Events added through Google API PHP client not showing in Calendar

查看:65
本文介绍了通过Google API PHP客户端添加的事件未显示在日历中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用Google API PHP客户端将事件添加到我的日历中.插入&之后成功返回ID.当我使用ID提取该事件​​时,它会显示摘要&一切正确由于某种原因,该活动正在我的日历中显示

I'm using Google API PHP client to add events to my calendar. ID is returned successfully after the insert & When I fetch that event using the ID it displays summary & everything correctly & for some reason , the event is showing up in my calendar

我正在使用服务帐户凭据.是否需要启用某些功能才能使其正常工作?

I'm using Service Account Credentials. Is there something to be enabled to get this working?

这是我的密码

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

推荐答案

使用新的Google_Client API,您需要与自己共享日历.

With the new Google_Client API, you need to share your calendar to yourself.

$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);

让我知道您是否还有问题.

Let me know if you still have issue.

这篇关于通过Google API PHP客户端添加的事件未显示在日历中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆