gpt4 book ai didi

java - 使用 Java 将 Google 日历数据(通过 API v3)导入 Google App Engine

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:23:34 24 4
gpt4 key购买 nike

我正在为事件数据来自 Google 日历(只读)的预订系统编写 Java REST API。我目前正在尝试找出从 Google 日历获取事件数据并将其存储在 Google App Engine 的 JPA 数据存储区中的最佳方法。我还有几个要求:

  • 我需要保存以前的日历数据。简单地删除数据库中的所有内容并用新数据替换它是不够的,因为我想出于统计目的保留数据的历史 View 。
  • 我需要在事件数据更改时通知用户,特别是在删除时。这需要我区分新事件数据(来自 API)和旧事件数据(来自 JPA 数据存储)。

有没有人对做什么有任何一般性的指导和建议。我是否通过尝试将数据复制到数据存储中来以正确的方式解决问题?我是否应该在每次需要使用数据时都发出 API 请求?如果我这样做了,有没有办法启动一些邮件服务来直接从 Google 日历中通知用户事件更改?

最佳答案

我认为尝试在数据存储中复制每个事件的信息并不是最佳选择。如果您想要一切,那么您将最终存储大量数据,而且我怀疑其中大部分都没有用。

如果您想存储数据用于统计分析,我建议您确定您希望跟踪的最小字段集是什么,然后只存储这些字段。一组合理的字段可能是:事件 ID、名称、时间、参加者、位置、描述和用于簿记目的的内部版本号。每次字段更改时增加版本号,并保存新的字段信息。对于额外的信用,您可以保存字段的哈希值,并且当最近检索到的条目的哈希值与已保存的内容匹配时不保存新版本。

由于您不再将整个事件存储在您的服务器上,当您需要事件详细信息时是否直接查询 API 的问题显然是"is"。

Google 日历会在创建或更改日历 Activity 时提供电子邮件通知。如果您担心用户会收到有关他们日历上出现的新事件的通知,可以通过将 sendNotifications 字段(在对 insert a new event 的调用中)设置为 true< 来轻松解决这个问题。 API 中的更新和删除调用(以及用户修改事件时的日历 UI 中)存在类似的功能。

我在这个实现中看到的最困难的部分是决定您的应用程序如何在用户进行修改时确定事件发生变化的时间。 (您的代码所做的更改可以立即反射(reflect)在您保存在数据存储中的数据中。)如果所有事件都出现在一个日历上,您可以轮询 API 以获取 list of events。 ,并将 updatedMin 字段与您上次查询更新的时间一起使用。如果事件在多个日历上,方法是相同的,但您需要为每个日历列出一个列表。

请注意,您向应用程序提供的任何凭据都需要能够读取和写入您正在修改的任何日历。作为初始方法,我建议您为您的应用程序创建一个主日历,该日历被列为您正在跟踪的所有事件的参与者。您代表用户创建的 Activity 会将用户列为与会者。用户创建并希望与您的应用程序相关联的事件需要将主日历添加为与会者。最后一点可能需要管理用户以正确的方式与系统交互接受一些培训。

上述方法的替代方法是让所有用户将对其日历的访问权限委托(delegate)给您的应用程序,但您将必须管理多组凭据,并且可能会清除用户日历上您不想跟踪的任何事件。

关于java - 使用 Java 将 Google 日历数据(通过 API v3)导入 Google App Engine,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10757920/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com