使用PHP(2020)以编程方式将事件添加到我的Google日历

使用PHP(2020)以编程方式将事件添加到我的Google日历,php,google-api,google-calendar-api,google-api-php-client,Php,Google Api,Google Calendar Api,Google Api Php Client,我已经为这个问题挣扎了很长一段时间了。基本上,我有一个网站,管理员可以创建事件,同时,事件应该添加到我公司的谷歌日历。我有一个HTML表单,它将信息发布到一个PHP文件中,然后尝试将事件添加到我自己的Google日历中。我目前创建了一个服务帐户,我的代码如下所示: require_once 'google-api/vendor/autoload.php'; $client = new Google_Client(); $client->setApplicationName("H

我已经为这个问题挣扎了很长一段时间了。基本上,我有一个网站,管理员可以创建事件,同时,事件应该添加到我公司的谷歌日历。我有一个HTML表单,它将信息发布到一个PHP文件中,然后尝试将事件添加到我自己的Google日历中。我目前创建了一个服务帐户,我的代码如下所示:

require_once 'google-api/vendor/autoload.php';

$client = new Google_Client();
$client->setApplicationName("House Events");
$client->setAuthConfig("MY AUTH CONFIG FILE");
$client->setScopes(Google_Service_Calendar::CALENDAR);
$client->setAccessType('offline');

$service = new Google_Service_Calendar($client);

$event = new Google_Service_Calendar_Event(array(
  'summary' => $title,
  'description' => $html,
  'start' => array(
    'dateTime' => $start
  ),
  'end' => array(
    'dateTime' => $end
  )
));

$calendarId = 'MY CALENDAR ID';
$event = $service->events->insert($calendarId, $event);

$calendarListEntry = new Google_Service_Calendar_CalendarListEntry();
$calendarListEntry->setId($calendarId);

$createdCalendarListEntry = $service->calendarList->insert($calendarListEntry);

printf('Event created: %s\n', $event->htmlLink);
此代码返回错误“您需要具有此日历的写入权限”。在实际的Google日历共享屏幕中,我无法授予服务帐户进一步的权限

我也尝试过GoogleCalendarAPI快速启动,但我不希望它在命令行之外运行。此外,我不需要访问权限来编辑单个用户的日历,我只想让我的代码将事件添加到我的日历中。最有效的方法是什么

“您需要具有此日历的写入程序访问权限。”

表示您只有对您试图写入的日历的读取权限

您需要将权限委派给服务帐户。服务帐户就像虚拟用户,您可以对其进行预授权访问

转到google日历网站,与服务帐户共享日历,并授予其写访问权限

“您需要具有此日历的写入程序访问权限。”

表示您只有对您试图写入的日历的读取权限

您需要将权限委派给服务帐户。服务帐户就像虚拟用户,您可以对其进行预授权访问


转到谷歌日历网站,与服务帐户共享日历,并授予其写权限。

我解决了问题


GSuite阻止我让编辑器访问套件之外的日历(我的服务帐户就是该套件)。我必须联系管理员,他给了我访问权限,之后我可以更改权限设置。谢谢你的帮助。

我把问题解决了


GSuite阻止我让编辑器访问套件之外的日历(我的服务帐户就是该套件)。我必须联系管理员,他给了我访问权限,之后我可以更改权限设置。谢谢您的帮助。

这是否回答了您的问题:嗯,是Ruby,我会尝试修改它谢谢这是否回答了您的问题:嗯,是Ruby,我会尝试修改它,谢谢我尝试过,但是为虚拟帐户提供读写访问权限的设置变灰了。您需要在日历上拥有写权限,然后才能授予其他人对该日历的写入权限。我已尝试过,但授予虚拟帐户读写权限的设置已灰显。在授予其他人对该日历的写入权限之前,您需要对该日历具有写入权限。