如何创建不带提醒的谷歌日历事件/如何获得模拟用户的服务帐户



我可以使用PHP库在谷歌日历中插入一个事件,但我想创建没有提醒的事件(实际上,我想创建一个没有默认提醒的事件,但为了简单起见,我会坚持关闭提醒)。

这是我关闭提醒的代码:

$reminders = new Google_EventReminders();
$reminders->setUseDefault(false);
$event->setReminders($reminders);

这似乎发送成功了,我得到了一个成功的返回代码,但当我查看日历中的事件时,我发现它仍然有默认的提醒设置。

我到处寻找解决方案,我发现了一件事:http://googleappsdeveloper.blogspot.co.uk/2012/01/calendar-api-v3-best-practices.html其中写道:"就像日历上的默认提醒一样,这些都是登录用户的个人提醒,不会影响其他人对同一日历或事件的设置。">

这让我想到了我用来访问日历的服务帐户。当我看到插入的事件时,它们都说"创建者"my_long_id@developer.gserviceaccount.com这是否意味着通知只与开发者帐户相关,而与主帐户无关?为了支持这一理论,我已经能够在Google API文档中使用Try It函数成功插入事件,但这些事件中没有"创建者"字段。

所以我研究了如何获得一个服务帐户来模拟用户,结果我被卡住了。以下是我尝试过的:

$client->setAssertionCredentials(new Google_AssertionCredentials(
SERVICE_ACCOUNT_NAME,
array('LINK TO auth/calendar', "LINK TO auth/calendar.readonly"),
$key,
'notasecret',
'LINK TO oauth.net/grant_type/jwt/1.0/bearer',
'my_email_address AT gmail.com'));

(我的编辑是用LINK to和AT来代替SO限制)但这会产生以下错误:

"Google_AuthException",消息为"刷新OAuth2令牌时出错,消息:"{"error":"access_denied","error_description":"不允许请求的作用域:LINK TO auth/calendar LINK TO auth/acalendar.readonly">

(去掉最终的电子邮件地址参数很好,但插入以开发帐户为创建者的事件)

有人知道如何解决这个问题吗?(提醒或模拟都可以!)?非常感谢。

我决定,在使用常规gmail帐户时,"创建者"字段是服务帐户的一个限制,这不太好用。此后,我转到了谷歌应用程序账户(慈善机构和教育机构免费),"创建者"字段不再出现。

最新更新