无法将特定电子邮件的条目作为主日历输入

时间:2016-05-13 16:39:11

标签: c# api google-calendar-api

我将Google Calendar API与服务帐户结合使用。实际上,我将创建一个应用程序,将本地数据库中的事件同步到特定的电子邮件用户。添加一个事件看起来效果很好但是当我需要更新一个事件时问题就出现了。特别是在更新之前,我检查特定用户的Google Calendar上是否存在该事件,让我举个例子,这就是我创建服务帐户的方式:

string[] scopes = new string[]
{
     CalendarService.Scope.Calendar, 
     CalendarService.Scope.CalendarReadonly
};

var certificate = new X509Certificate2(CPath, "notasecret", X509KeyStorageFlags.Exportable);

ServiceAccountCredential credential = new ServiceAccountCredential(
                 new ServiceAccountCredential.Initializer("my service account email")
            {
                  Scopes = scopes
            }.FromCertificate(certificate));

CalendarService service = new CalendarService(
                new BaseClientService.Initializer()
            {
                HttpClientInitializer = credential,
                ApplicationName = ApplicationName
            });

 return service;

在更新或添加事件之前,我会以这种方式检查事件是否存在:

public bool EventExist(string id)
{
     try
     {
         var service = AuthenticationService();
         Event foundResponse = service.Events.Get("foo@gmail.com", id).Execute(); //id is the id of the event
            return true;
     }
     catch (Exception ex)
     {
         Log.Write(ex.Message);
         return false;
     }
}

现在AuthenticationService()服务是返回service变量的方法(第一个代码写入)。稍后,我使用service变量来获取特定用户的事件,请注意email是用户的主日历。现在,如果我通过" primary",则会找到该事件,相反,如果我通过电子邮件,就像在这种情况下,找不到事件。

我不知道为什么,service-account可能会将特定用户的事件保存在某处?这种情况对我来说非常糟糕,因为如果用户删除具有特定id的事件,我需要检查该元素是否存在于用户的日历中。

也许我对某些内容有误或者Google不允许这样做?

0 个答案:

没有答案