Я пытаюсь получить список событий Календаря Google с помощью API календаря .NET v3.
Следующий код кажется правильным, но не работает, когда я вызываю request.Execute(); с показанной здесь ошибкой «ссылка на объект не указывает на экземпляр объекта». Я не знаю, как отладить источник ошибки или какой «объект» не задан.
ServiceAccountCredential credentialService;
CalendarService service;
var certificate = new X509Certificate2("filename.p12", "notasecret", X509KeyStorageFlags.Exportable);
credentialService = new ServiceAccountCredential(
new ServiceAccountCredential.Initializer("name@here.iam.gserviceaccount.com")
{
Scopes = scopes
}.FromCertificate(certificate));
// Create the service.
service = new CalendarService(new BaseClientService.Initializer()
{
HttpClientInitializer = credentialService,
ApplicationName = "app name",
});
try
{
// Define parameters of request.
EventsResource.ListRequest request = service.Events.List("primary");
request.TimeMin = DateTime.Now;
request.ShowDeleted = false;
request.SingleEvents = true;
request.MaxResults = 20;
request.OrderBy = EventsResource.ListRequest.OrderByEnum.StartTime;
**Events events = request.Execute();**
if (events.Items != null && events.Items.Count > 0)
{
foreach (var eventItem in events.Items)
{
string when = eventItem.Start.DateTime.ToString();
if (String.IsNullOrEmpty(when))
{
when = eventItem.Start.Date;
}
Item item = new Item();
item.Id = Guid.NewGuid().ToString();
item.Text = when;
item.Description = eventItem.Summary;
itemsMeetings.Add(item);
//Console.WriteLine("{0} ({1})", eventItem.Summary, when);
}
}
else
{
//Console.WriteLine("No upcoming events found.");
}
}
catch(Exception ex)
{
Console.Write(ex.Message);
}
Привет, мне просто любопытно, отображается ли диалоговое окно при запуске кода? чтобы убедиться, что учетные данные работают для учетной записи службы? Это также может быть полезно coderhelper.com/questions/4660142/…
Пользовательское приглашение не выдается. Я полагаю, что мог бы проверить учетные данные, но не уверен, как бы я это сделал.
Попробуйте заменить
primary
на свой точный идентификатор календаря и поделитесь своим календарем со своей служебной учетной записью и посмотрите, решит ли это проблему.@ Рон М, да! Это помогло, спасибо.