我正在使用Google Calendar API V3,OAuth2& 。净。 我的身份验证是通过服务帐户进行的,因为我需要将其作为服务运行,而无需用户界面。 经过很多努力来验证凭证后,我已经成功了,但出于某种原因,我不能在我的日历上创建一个事件(&是的,我与自己分享了它......)。
我发现了很多关于同样问题的问题,但是所有我都不知道或认为它会帮助我。
我寻求一些帮助。感谢 String serviceAccountEmail = "XXX@developer.gserviceaccount.com";
var certificate = new X509Certificate2(@"key.p12", "notasecret", X509KeyStorageFlags.MachineKeySet |X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable);
ServiceAccountCredential credential = new ServiceAccountCredential(
new ServiceAccountCredential.Initializer(serviceAccountEmail)
{
Scopes = new[] { CalendarService.Scope.Calendar }
}.FromCertificate(certificate));
// Create the service.
var service = new CalendarService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = "Calendar API Sample",
});
Event e = new Event()
{
Summary = "Appointment1",
Location = "42.138679, -88.045519",
Start = new EventDateTime()
{
DateTime = DateTime.Now,
TimeZone = "Asia/Jerusalem"
},
End = new EventDateTime()
{
DateTime = DateTime.Now.AddDays(1),
TimeZone = "Asia/Jerusalem"
},
};
Event createdEvent = service.Events.Insert(e, "primary").Execute();
答案 0 :(得分:0)
由于某种原因,Insert事件到“主”日历,没有完成这项工作。 相反,我编写了以下代码,它允许我编写事件。
var list = service.CalendarList.List().Execute().Items;
service.Events.Insert(e, list[0].Id).Execute();
这是我解决这个问题的方法,我同意Craig的观点,即API组织得不好。 (在使用令人惊叹的地图API之后说这个。)
答案 1 :(得分:0)
也许尝试以编程方式指定用户,而不是与您的服务帐户电子邮件共享日历?以下工作在我的申请中:
~/workspace ❯❯❯ ruby -v
ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin14]
~/workspace ❯❯❯ ruby -v
ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin14]
~/workspace ❯❯❯ rails new gitsee
Rails 5 requires Ruby 2.2.2 or newer.
You're running
ruby 2.0.0p481 (2014-05-08 revision 45883) [universal.x86_64-darwin14]
Please upgrade to Ruby 2.2.2 or newer to continue.