【发布时间】:2018-08-29 23:00:33
【问题描述】:
我正在使用此代码,它可以工作,并允许我的应用从使用的谷歌帐户获取Calendar 列表。
UserCredential credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
new ClientSecrets
{
ClientId = "xxx",
ClientSecret = "xxxx-xxxx",
},
new[] { CalendarService.Scope.Calendar },
"support@xxx.com",
CancellationToken.None).Result;
// Create the service.
var service = new CalendarService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = "xxx",
});
CalendarListResource.ListRequest cal = service.CalendarList.List();
cal.MaxResults = 10;
var calresult = cal.Execute().Items;
我的问题是,当我这样做时,我会将所有日历和事件导入我的本地数据库,所以一个小时后我需要运行一个脚本来使用最新的日历和事件信息更新数据库,因为它们可能已经添加了新事件或删除一些与日历相同的内容。
不确定在哪里寻找任何建议?
【问题讨论】:
-
“我的问题”...但是接下来的句子实际上并不是一个问题。您是否在问如何按计划运行脚本?您可以创建 Windows 服务,或从 Windows 计划任务触发您的程序。而且...您是否考虑过是否真的需要在数据库和 Google 日历之间进行同步?您的数据库总是可能有点过时。为什么不在您真正需要的时候直接从 Google 日历中查询信息呢?然后你总是得到最新的版本,你不需要搞乱同步过程。
-
@ADyson 关于windows服务和相关的我不能做任何问题。但我的主要问题是我如何在运行脚本时连接到某人的日历我的意思是在他们允许应用程序的网站上并且它得到了他们的信息所以有点卡在哪里看..
-
google 在他们的 API 文档中提供了一些教程,展示了当用户通过 Oauth 登录时如何进行操作。您的代码现在看起来可能正在使用服务帐户,以始终连接到同一个 Google ID?我在想,由于使用了客户端密码,尽管您的代码示例对我来说看起来不完整(诚然,我只通过 PHP 使用过 API,所以我可能是错的,但是你去吧)。
-
@ADyson 我一直在环顾四周,但没有找到上面提到的我要找的东西。
-
啊,好吧,是的,这增加了一些额外的功能。其实我只是搜索了一下,发现了一些东西。看来,如果您从 API 为用户帐户请求刷新令牌,您可以存储该令牌并且它不会过期,除非用户明确撤销您的应用程序对其帐户的访问权限。例如,请参阅stackoverflow.com/a/18839734/5947043。所以我认为您的自动化服务可以存储刷新令牌并在需要同步数据时使用它来获取新的访问令牌。
标签: c# .net google-calendar-api