【发布时间】:2014-01-20 03:27:45
【问题描述】:
我可以使用 PHP 库在 Google 日历中插入一个事件,但我想创建没有提醒的事件(实际上,我想创建一个不是默认的提醒,但为了简单起见,我会坚持只关闭提醒)。
这是我关闭提醒的代码:
$reminders = new Google_EventReminders();
$reminders->setUseDefault(false);
$event->setReminders($reminders);
这个好像发送成功了,我得到一个成功的返回码,但是当我查看日历中的事件时,我看到它仍然设置了默认提醒。
我到处寻找解决方案 - 我发现的一件事是: http://googleappsdeveloper.blogspot.co.uk/2012/01/calendar-api-v3-best-practices.html 它说:“就像日历上的默认提醒一样,这些是针对已登录用户的个人提醒,不会影响其他人可能对同一日历或事件进行的设置。”
这让我想到了我用来访问日历的服务帐户。当我查看已经插入的事件时,他们都说'created by' 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 令牌时出错,消息:'{ “错误”:“access_denied”, "error_description" : "请求的范围不允许:链接到 auth/calendar 链接到 auth/calendar.readonly"
(省略最后的电子邮件地址参数可以正常工作 - 但以开发帐户作为创建者插入事件)
请问有谁知道如何解决这个问题(提醒或模仿都可以!)?非常感谢。
【问题讨论】:
-
你有想过这个吗?