Google Calendar API和Google App验证流程

时间:2019-06-11 21:10:58

标签: firebase google-api google-calendar-api google-oauth caldav

我正在为使用Google Calendar API的客户端创建网站。本质上,客户需要能够输入其日历ID并在网站上填充事件。这是通过Firebase函数处理的,该函数执行对Calendar API的请求。

我尝试的第一件事是遵循Google的日历API快速入门教程。这工作了一段时间,直到他们提供的临时访问令牌过期,然后我才意识到访问令牌是临时的。

接下来,我生成了自己的OAuth2客户端ID并使用了该ID。这一直很有效,直到我开始从Google收到“匿名使用已过期”错误为止,一段时间后我才意识到这是因为密钥没有启用只读日历作用域。

在尝试启用该范围时,有人告诉我需要与Google验证我的应用程序,这可能需要数周的时间,并且要求我为我的应用程序编写服务条款和隐私权政策。这似乎有点不必要,因为它将仅从一个人的日历中读取事件,并且他已经授予我批准和访问权限。

我的下一个想法是公开日历并使用静态API密钥,但是日历是从名为Peak Pro的预订服务同步的,该服务会在日历描述中填充与会的客户的姓名,电子邮件和电话号码事件。我不能公开露面。

接下来,我被CalDAV API吸引住了,但是在与Google验证OAuth2同意屏幕方面似乎有相同的要求。

我通常不会提出这样的基本问题,但是三周后我一直找不到解决方案。 Google在这里提供我遗失的另一种选择吗?

1 个答案:

答案 0 :(得分:1)

不幸的是,简单的答案是不,谷歌没有为此提供其他选择。

出于安全考虑,在使用G-Suite API向域外的用户提供服务时,该过程需要Google对应用程序进行验证。这纯粹是出于安全原因,因为应用程序可以读取和传递个人信息,如果没有此手动验证代码,则可以执行应用程序开发人员要求的范围之外的代码。

不过,作为一种解决方法,您可以在将事件的事件详细信息设为私有之后,使用日历设置中提供的内嵌iframe将日历导入到网页中。您的客户可以通过完成以下步骤为您提供此链接:

  1. 转到calendar.google.com
  2. 在页面右上方,转到⚙->设置
  3. 选择要在页面左侧面板上显示的日历。
  4. 在“访问权限”下,单击“可公开使用”,然后更改下拉菜单以选择“仅查看忙/闲(隐藏详细信息)” [1]。
  5. 在“集成日历”下,有指向日历公共URL和iframe嵌入代码的链接。

'See only free/busy (hide details)' selected

选择“仅查看忙/闲(隐藏详细信息)”后,匿名/公共用户可以查看的唯一信息是事件发生的时间和日历的所有者。日历中事件的所有其他信息都是隐藏的,除非查看页面的人被邀请参加该事件并登录[2]。

Calendar event information is private unless user is invited