Google 日历 API 和 Google 应用程序验证过程
Google Calendar API and Google App Verification Process
我正在为使用 Google 日历 API 的客户创建一个网站。本质上,客户需要能够输入他的日历 ID 并在网站上填充事件。这是通过 firebase 函数处理的,该函数对日历 API.
执行请求
我尝试的第一件事是遵循 Google 的日历快速入门教程 API。这工作了一段时间,直到他们提供的临时访问令牌过期,我意识到访问令牌是临时的。
接下来,我生成了自己的 OAuth2 客户端 ID 并使用了它。在我开始收到来自 Google 的 "Anonymous usage expired" 错误之前,这一直有效,一段时间后我意识到这是因为密钥没有启用只读日历范围。
在尝试启用范围时,我被告知需要使用 Google 验证我的应用程序,这可能需要数周时间,并且需要我为我的应用程序编写服务条款和隐私政策。这似乎有点不必要,因为它只会从一个人的日历中读取事件,并且他已经授予我批准和访问权限。
我的下一个想法是制作日历 public 并使用静态 API 键,但日历是从名为 Peak Pro 的预订服务同步的,该服务会使用名称填充日历描述、电子邮件和 phone 参加活动的客户数量。我不能公开那些 publicly。
接下来,我被 CalDAV API 吸引了,但在验证 OAuth2 同意屏幕方面似乎与 Google 有相同的要求。
我通常不会提出这样一个基本问题,但 3 周后我一直找不到解决方案。 Google 是否提供了我遗漏的另一个选项?
不幸的是,简单的答案是不,Google 没有为此提供另一种选择。
出于安全原因,在使用 G-Suite API 向域外用户提供服务时,该过程需要 Google 对应用程序进行验证。这纯粹是出于安全原因,因为应用程序可以读取和传递个人信息,如果没有此手动验证代码,则可能会超出应用程序开发人员声称的范围执行。
但是,作为解决此问题的方法,您可以使用日历设置中提供的 iframe 嵌入,在将事件的事件详细信息设为私有后将日历导入网页。您的客户可以通过完成以下步骤向您提供 link:
- 转到
calendar.google.com
- 在页面右上角,转到⚙ -> 设置
- Select 您希望在页面的 left-hand 面板上显示的日历。
- 在 'Access Permissions' 下,单击 'Make Available to Public' 并更改下拉菜单以 'See only free/busy (hide details)' 选择 [1]。
- 在'Integrate Calendar'下,有link到日历的publicURL,以及iframe嵌入代码。
选择 'See only free/busy (hide details)' 后,anonymous/public 用户可以查看的唯一信息是事件的时间和日历的所有者。日历中活动的所有其他信息都将隐藏,除非查看页面的人受邀参加活动并登录 [2]。
我正在为使用 Google 日历 API 的客户创建一个网站。本质上,客户需要能够输入他的日历 ID 并在网站上填充事件。这是通过 firebase 函数处理的,该函数对日历 API.
执行请求我尝试的第一件事是遵循 Google 的日历快速入门教程 API。这工作了一段时间,直到他们提供的临时访问令牌过期,我意识到访问令牌是临时的。
接下来,我生成了自己的 OAuth2 客户端 ID 并使用了它。在我开始收到来自 Google 的 "Anonymous usage expired" 错误之前,这一直有效,一段时间后我意识到这是因为密钥没有启用只读日历范围。
在尝试启用范围时,我被告知需要使用 Google 验证我的应用程序,这可能需要数周时间,并且需要我为我的应用程序编写服务条款和隐私政策。这似乎有点不必要,因为它只会从一个人的日历中读取事件,并且他已经授予我批准和访问权限。
我的下一个想法是制作日历 public 并使用静态 API 键,但日历是从名为 Peak Pro 的预订服务同步的,该服务会使用名称填充日历描述、电子邮件和 phone 参加活动的客户数量。我不能公开那些 publicly。
接下来,我被 CalDAV API 吸引了,但在验证 OAuth2 同意屏幕方面似乎与 Google 有相同的要求。
我通常不会提出这样一个基本问题,但 3 周后我一直找不到解决方案。 Google 是否提供了我遗漏的另一个选项?
不幸的是,简单的答案是不,Google 没有为此提供另一种选择。
出于安全原因,在使用 G-Suite API 向域外用户提供服务时,该过程需要 Google 对应用程序进行验证。这纯粹是出于安全原因,因为应用程序可以读取和传递个人信息,如果没有此手动验证代码,则可能会超出应用程序开发人员声称的范围执行。
但是,作为解决此问题的方法,您可以使用日历设置中提供的 iframe 嵌入,在将事件的事件详细信息设为私有后将日历导入网页。您的客户可以通过完成以下步骤向您提供 link:
- 转到
calendar.google.com
- 在页面右上角,转到⚙ -> 设置
- Select 您希望在页面的 left-hand 面板上显示的日历。
- 在 'Access Permissions' 下,单击 'Make Available to Public' 并更改下拉菜单以 'See only free/busy (hide details)' 选择 [1]。
- 在'Integrate Calendar'下,有link到日历的publicURL,以及iframe嵌入代码。
选择 'See only free/busy (hide details)' 后,anonymous/public 用户可以查看的唯一信息是事件的时间和日历的所有者。日历中活动的所有其他信息都将隐藏,除非查看页面的人受邀参加活动并登录 [2]。