key.p12 인증서가있는 서비스 계정을 사용하여 Google 캘린더 API에 액세스하고 있습니다. 그러나 도메인의 모든 사용자의 일정에 액세스 할 수는 없습니다. 도메인 계정에 대한 권한을 서비스 계정에 위임하는 단계를 수행했습니다. https://developers.google.com/accounts/docs/OAuth2ServiceAccount.net에서 서비스 계정을 사용하여 도메인 사용자의 캘린더에 액세스하는 방법?
.net에 대한 코드 샘플이 없습니다. 그리고 그것은 Google .net 클라이언트 라이브러리에서만 ServiceAccountCredential을 얻는 것 같습니다. 여기 내 코드는
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);
}
}
캘린더 목록은 항상 비어 있습니다. 일정 설정에서이 서비스 계정으로 내 도메인 계정 일정을 수동으로 공유하면이 코드는 내 도메인 계정 달력을 성공적으로 반환합니다.
이 서비스 계정을 도메인의 모든 사용자의 캘린더에 액세스하는 방법이 있습니까? 당신이 지적