【问题标题】:Google Calendar PHP Api - Check if user has edit rightsGoogle Calendar PHP Api - 检查用户是否有编辑权限
【发布时间】:2014-12-10 15:45:53
【问题描述】:

我有一个网站,用户可以授予该网站编辑其 Google 日历的权限。 在网站的主页上显示了来自公司日历的事件列表,这些事件是可编辑的。

问题是网站上的所有用户都无权编辑日历中的事件(即他们的 Google 帐户)。有什么方法可以检查用户是否有权通过PHP API client 编辑日历?
澄清一下,所有用户都不应该有编辑日历的权限。如果他们的 Google 帐户有权访问,则应显示编辑工具。否则他们只会得到事件列表。

在这种情况下,日历是公开的,因此每个人都应该能够看到这些事件。
(如果它也适用于非公开日历也不会受到影响,但我想这更棘手。需要一个后备服务帐户或其他东西。)

我目前正在使用Events Resourcelist method 来获取事件。

【问题讨论】:

    标签: php google-calendar-api google-api-client


    【解决方案1】:

    Calendar list get 返回一个calendar list resource

    它有一个叫做访问角色的东西

    accessRole string 认证用户在日历上的有效访问角色。只读。

    可能的值是:

    • "freeBusyReader" - 提供对忙/闲信息的读取权限。
    • "reader" - 提供对日历的读取访问权限。私人事件将显示给具有读者访问权限的用户,但将隐藏事件详细信息。
    • “writer” - 提供对日历的读写访问。私人事件将显示给具有作者访问权限的用户,并且事件详细信息将可见。
    • “所有者” - 提供日历的所有权。此角色拥有 writer 角色的所有权限,并具有查看和操作 ACL 的额外能力。

    php 代码是这样的:

    calendarListEntry = $service->calendarList->get('calendarId');
    

    注意:使用服务帐户会容易得多,然后脚本可以访问日历,您可以使用脚本编辑日历而无需访问用户帐户。

    【讨论】:

    • 我正在使用listEvents 来获取事件。无论用户权限如何,该请求似乎总是返回 accessRole “reader”。为什么是这样?检查权限时是否使用我的 Google 应用程序?我希望它使用用户的 Google 帐户,有些用户应该有权编辑日历,而有些则没有。我不想在 Google 日历和我的网站上都进行设置。
    • 稍后我将不得不检查该列表。但是通过使用服务帐户,您可以通过您的网站控制这一切
    猜你喜欢
    • 2019-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-09
    • 2013-12-27
    • 2020-07-03
    相关资源
    最近更新 更多