我已经为这个问题纠结了很长时间了。基本上,我有一个网站,管理员可以在那里创建活动,同时,这些活动应该被添加到我公司的Google日历中。我有一个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);
此代码返回错误“You need to have writer access to this calendar.",并且在实际的Google Calendar共享屏幕中,我无法给予服务帐户进一步的权限。
我也尝试过Google Calendar API Quickstart,但我不希望它在命令行之外运行。另外,我不需要访问权限来编辑单个用户的日历,我只希望让代码在我的日历中添加一个事件。最有效的方法是什么?
3条答案
按热度按时间ui7jx7zq1#
“您必须具有此行事历的编写者存取权。”
表示您对要写入的日历只有读取权限。
您需要将权限委派给服务帐户。服务帐户类似于虚拟用户,您可以预先授权其访问权限。
转到谷歌日历网站,并与服务帐户共享日历给予它写访问权限。
von4xj4u2#
我把问题解决了。
GSuite阻止我授予编辑器访问套件之外的日历的权限(我的服务帐户是)。我不得不联系管理员,他给了我访问权限,之后我就可以更改权限设置了。谢谢你的帮助。
xxb16uws3#
@阿威-拉坦
你的代码看起来像这样就可以工作了。