Como acessar o calendário dos usuários do domínio usando a conta de serviço em .net?
Estou usando a conta de serviço com key.p12 cert para acessar a API do Google Agenda. No entanto, ele não pode acessar o calendário de nenhum usuário no domínio. Eu segui as etapas para delegar autoridade em todo o domínio à conta de serviçohttps://developers.google.com/accounts/docs/OAuth2ServiceAccount
Não possui amostra de código para .net. E parece que só recebo ServiceAccountCredential na biblioteca do cliente .net do google. Aqui está o meu código
static void Main(string[] args)
{
string serviceAccountEmail = "[email protected]";
var certificate = new X509Certificate2(@"clientPrivateKey.p12", "notasecret", X509KeyStorageFlags.Exportable);
Console.WriteLine("service account: {0}", serviceAccountEmail);
ServiceAccountCredential credential = new ServiceAccountCredential(new
ServiceAccountCredential.Initializer(serviceAccountEmail)
{
Scopes = new[] { CalendarService.Scope.Calendar }
}.FromCertificate(certificate));
BaseClientService.Initializer initializer = new BaseClientService.Initializer();
initializer.HttpClientInitializer = credential;
initializer.ApplicationName = "Google Calendar Sample";
CalendarService calservice = new CalendarService(initializer);
// list all the calendars it can see
try
{
var list = calservice.CalendarList.List().Execute();
if (list.Items.Count > 0)
{
foreach(var item in list.Items)
{
Console.WriteLine("Found calendar for account {0}", item.Id);
}
}
else
{
Console.WriteLine("Calendar list for this service account is empty");
}
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
}
}
A lista do calendário está sempre vazia. Se eu compartilhar manualmente o calendário da minha conta de domínio com esta conta de serviço na configuração de calendário, esse código retornará o calendário da minha conta de domínio com êxito.
Existe uma maneira de fazer com que essa conta de serviço acesse todo o calendário do usuário no domínio?