谷歌日历 - 创建事件说成功,但不显示在日历上。

问题描述 投票:0回答:1

我正试图使用Google日历API创建Google日历事件。 具体来说,我使用的是服务账户方法,因为我的应用程序将通过一个事件数组来创建并将它们插入到我的Google日历中。 使用的语言是PHP。

我已经从gitHub下载了PHP客户端库。 https:/github.comgoogleapisgoogle-api-php-client。.

我的测试代码如下。 这成功地完成了,并给了我一个长长的事件ID.然而,当我试图把它粘贴到我的浏览器中,它带我到我的日历,并说 "无法找到所要求的事件"。 然而,当我尝试将其粘贴到我的浏览器中时,它将我带到我的日历上,并说 "无法找到所请求的事件",5282020上也没有任何显示。 谁能让我明白我做错了什么?

C:sitesGoogleCredentialsservice-account.json处的文件是我在Google Cloud Console中的项目下创建的凭证中的服务账户密钥。

require_once('google-calendar/vendor/autoload.php');

    putenv('GOOGLE_APPLICATION_CREDENTIALS=C:/sites/GoogleCredentials/service-account.json');

    $client = new Google_Client();
    $client->useApplicationDefaultCredentials();
    $client->addScope(Google_Service_Calendar::CALENDAR_EVENTS);
    $service = new Google_Service_Calendar($client);

    $event = new Google_Service_Calendar_Event(array(
      'summary' => 'Google I/O 2015',
      'location' => '800 Howard St., San Francisco, CA 94103',
      'description' => 'A chance to hear more about Google\'s developer products.',
      'start' => array(
        'dateTime' => '2020-05-28T09:00:00',
        'timeZone' => 'America/New_York'
      ),
      'end' => array(
        'dateTime' => '2020-05-28T17:00:00',
        'timeZone' => 'America/New_York'
      )
    ));

    $calendarId = 'primary';
    $event = $service->events->insert($calendarId, $event);
    printf('Event created: '.$event->htmlLink);
google-api google-calendar-api google-php-sdk
1个回答
3
投票

你需要记住,一个服务账户不是你。 一个服务账户有它自己的谷歌日历账户。 事件被插入到它的谷歌日历,而不是你的。

你应该分享你的日历与服务帐户使用服务帐户的电子邮件地址,然后使用日历ID从你的日历插入到。

你也可以离开它是是,只是确保邀请自己的服务帐户运行的事件。

© www.soinside.com 2019 - 2024. All rights reserved.