【问题标题】:How to create a Google Calendar event without a reminder / How to get Service Accounts to impersonate users如何在没有提醒的情况下创建 Google 日历活动 / 如何让服务帐户模拟用户
【发布时间】: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"

(省略最后的电子邮件地址参数可以正常工作 - 但以开发帐户作为创建者插入事件)

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

【问题讨论】:

  • 你有想过这个吗?

标签: php google-calendar-api


【解决方案1】:

我认为在使用常规 gmail 帐户时,“创建者”字段是服务帐户的限制 - 这不太好用。此后,我切换到了 Google Apps 帐户(慈善机构和教育机构免费),“创建者”字段不再出现。

【讨论】:

    猜你喜欢
    • 2021-12-08
    • 2013-12-10
    • 2021-03-29
    • 2021-10-31
    • 1970-01-01
    • 2015-01-22
    • 2022-11-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多