firebase - Google 日历 API 和 Google 应用程序验证流程

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

我正在为使用 Google Calendar API 的客户创建一个网站。本质上,客户需要能够输入他的日历 ID 并将事件填充到网站上。这是通过向日历 API 执行请求的 firebase 函数来处理的。

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

接下来,我生成了自己的 OAuth2 客户端 ID 并使用它。这种方法短暂有效,直到我开始收到来自 Google 的“匿名使用已过期”错误,一段时间后我意识到这是因为该 key 没有启用只读日历范围。

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

我的下一个想法是公开日历并使用静态 API key ,但日历是从名为 Peak Pro 的预订服务同步的,该服务会使用参加 session 的客户的姓名、电子邮件和电话号码填充日历描述事件。我不能公开揭露这些。

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

我通常不会提出这么基本的问题,但三周后我一直无法找到解决方案。 Google 是否提供了我所缺少的另一个选项?

最佳答案

不幸的是,简单的答案是否定的,Google 没有为此提供其他选项。

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

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

  1. 转至calendar.google.com
  2. 在页面右上角,转至 ⚙ -> 设置
  3. 选择您希望在页面左侧面板上显示的日历。
  4. 在“访问权限”下,点击“公开”并更改下拉菜单以选择“仅查看忙/闲信息(隐藏详细信息)”[1]。
  5. 在“集成日历”下,有指向日历公共(public)网址的链接以及 iframe 嵌入代码。

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

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

Calendar event information is private unless user is invited

关于firebase - Google 日历 API 和 Google 应用程序验证流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56551721/

相关文章:

ios - 找不到已创建的仅查看 Firebase 项目的 "Add App"按钮

firebase - 在 Firestore 中存储(可能)巨大列表的最佳方式是什么?

android - Google api gettoken(Context,String,String) 现已弃用

node.js - 使用 Directory API 获取资源日历

java - Firebase 安卓代理设置

firebase - 使用用户名作为 firebase 中的 key 来存储用户

c# - 谷歌日历 API V3

fullcalendar - 完整日历 Google 事件开始/结束格式

oauth - 在初始身份验证后执行 Google 联合登录/oAuth2

javascript - 无法从 OAuth Google API 获取已安装应用程序的访问 token