C# 如何与谷歌日历同步数据库

C# 如何与谷歌日历同步数据库,c#,.net,google-calendar-api,C#,.net,Google Calendar Api,我正在使用此代码,它可以工作,并允许我的应用程序从使用过的google帐户获取日历列表 UserCredential credential = GoogleWebAuthorizationBroker.AuthorizeAsync( new ClientSecrets { ClientId = "xxx", ClientSecret = "xxxx-xxxx", }, new[] { CalendarService.Scope.Calendar },

我正在使用此代码,它可以工作,并允许我的应用程序从使用过的google帐户获取
日历
列表

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计划任务触发程序。但是…你有没有考虑过你是否真的需要在数据库和谷歌日历之间同步?您的数据库总是可能有点过时。为什么不在你真正需要的时候直接从谷歌日历上查询信息呢?这样你就可以得到最新的版本,而且你不需要在同步过程中乱来。@ADyson关于windows服务和相关服务,我在这方面没有问题。但我的主要问题是,当运行脚本时,我如何连接到某人的日历?我是说,在网站上,他们允许使用该应用程序,但它获取了他们的信息,所以有点卡住了。谷歌在他们的API文档中提供了一些教程,展示了当用户通过Oauth登录时如何进行连接。你的代码现在看起来像是在使用一个服务帐户,总是连接到同一个谷歌ID?我在想,由于使用了客户机机密,虽然我觉得你的代码样本不完整(承认我只通过PHP使用过API,所以我可能错了,但你错了)。@ADyson我一直在四处寻找,但没有找到上面提到的我要找的东西。啊,好吧,是的,这增加了一点额外的功能。事实上,我只是多搜索了一下,发现了一些东西。如果您从API为用户帐户请求刷新令牌,则可以存储该令牌,并且除非用户明确撤销应用程序对其帐户的访问,否则该令牌不会过期。例如,见。因此,我认为您的自动化服务可以存储刷新令牌,并在需要同步数据时使用它来获取新的访问令牌。