Google Calendar API 사용하기 #1
13307 단어 GoogleCalendarAPIC#.NET
Google Calendar API를 조금 만지기를 원했습니다.
여러 분야로 눈을 옮겨 조금 만져보고 싶어지는 나쁜 버릇입니다.
크라우드소싱 부업을 찾고 있다면 Gooogle Calendar에 일정을 넣어/업데이트할 수 있는 기회가 있습니다.
왠지 그것 계기로 무성하게 API를 부르고 싶어졌기 때문에, 시험해 보았습니다.
※덧붙여서 안건은 받지 않습니다 w
시리즈
Google Calendar API 사용하기 #2
Google Calendar API 사용하기 #3
환경
IDE: VisualStudio2019
응용 프로그램: 콘솔 앱
프레임워크: .NET Core 3.1
Google Calendar API 시작
공식적으로 입문이 있었습니다.
Get Started with the Calendar API
분명히 API를 사용하려면 자격 증명을 만들어야합니다.
다음 세 가지 방법이 있다는 것입니다.
OAuth 클라이언트 ID를 이용하는 방법으로는, 곧바로 인증 정보를 작성할 수 있습니다만, 「oauth 동의 화면」의 설정을 실시하지 않으면 프라이빗 데이터에의 액세스가 100회까지로 제한된다고 해
또한 "oauth 동의 화면"의 설정이 번거롭기 때문에 "서비스 계정"을 사용하는 방법을 시도하고 싶습니다.
서비스 계정 만들기
이하에 입력을 실시해 작성.
완성된 서비스 계정 링크를 클릭
키 만들기를 클릭
JSON 선택
여기에서 다운로드한 Json 내용의 정보를 사용하여 GoogleAPI를 호출합니다.
클라이언트 라이브러리를 사용하여 약속 얻기
Nuget에서 캘린더 용 DLL을 다운로드합니다.
그런 다음 생성한 서비스 계정을 조작할 캘린더를 게시합니다.
대상 캘린더 설정에서 특정 사용자와 공유할 때 추가합니다.
이메일 주소에 서비스 계정의 이메일 주소를 입력합니다.
※다운로드한 JSON의 client_email에도 있습니다.
샘플 코드 구현
이하 .Net의 샘플이 공식적으로 있었으므로, 그쪽을 참고로 해 보겠습니다.
.Net Sample
우선 고피하고, 환경에 의존하는 곳은 변경.
또, 서비스 어카운트로 인증할 필요가 있기 때문에 이하를 참고로 해, credential를 작성하는 곳은 재작성했다.
Google Calendar API ServiceAccountCredential
using Google.Apis.Auth.OAuth2;
using Google.Apis.Calendar.v3;
using Google.Apis.Services;
using Google.Apis.Util.Store;
using Newtonsoft.Json.Linq;
using System;
using System.IO;
using System.Threading;
namespace GoogleAPITest
{
public class Program
{
// If modifying these scopes, delete your previously saved credentials
// at ~/.credentials/calendar-dotnet-quickstart.json
private static string[] Scopes = { CalendarService.Scope.CalendarReadonly };
private static string ApplicationName = "Google Calendar API .NET Quickstart";
public static void Main(string[] args)
{
var jObject = JObject.Parse(File.ReadAllText(
@"C:\job\TestProject\GoogleAPITest\testproject-269217-813bf9be17a5.json"));
var serviceAccountEmail = jObject["client_email"].ToString();
var certificate = jObject["private_key"].ToString();
var credential = new ServiceAccountCredential(
new ServiceAccountCredential.Initializer(serviceAccountEmail)
{
Scopes = new[] { CalendarService.Scope.Calendar }
}.FromPrivateKey(certificate));
// Create Google Calendar API service.
var service = new CalendarService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = ApplicationName,
});
// おそらく不必要
// Define parameters of request.
//var request = service.Events.List("primary");
//request.TimeMin = DateTime.Now;
//request.ShowDeleted = false;
//request.SingleEvents = true;
//request.MaxResults = 10;
//request.OrderBy = EventsResource.ListRequest.OrderByEnum.StartTime;
// ここで第2引数にサービスアカウントに公開したカレンダーIDを指定する
var request = new EventsResource.ListRequest(service, "公開したカレンダーのカレンダーID");
// List events.
var events = request.Execute();
Console.WriteLine("Upcoming events:");
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;
}
Console.WriteLine("{0} start:({1}) end:({2})", eventItem.Summary, when, eventItem.End.DateTime.ToString());
}
}
else
{
Console.WriteLine("No upcoming events found.");
}
Console.Read();
}
}
}
게시한 캘린더의 최근
실행 결과
성공적으로 얻은 것 같습니다. (옛날의 이벤트는 무시로···)
이번은 여기까지 합니다.
다음 번에는 캘린더 업데이트를 시도해 보겠습니다.
다음 번
Reference
이 문제에 관하여(Google Calendar API 사용하기 #1), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/GodPhwng/items/4310586e1ec3bda4d91f
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Google Calendar API 사용하기 #2
Google Calendar API 사용하기 #3
환경
IDE: VisualStudio2019
응용 프로그램: 콘솔 앱
프레임워크: .NET Core 3.1
Google Calendar API 시작
공식적으로 입문이 있었습니다.
Get Started with the Calendar API
분명히 API를 사용하려면 자격 증명을 만들어야합니다.
다음 세 가지 방법이 있다는 것입니다.
OAuth 클라이언트 ID를 이용하는 방법으로는, 곧바로 인증 정보를 작성할 수 있습니다만, 「oauth 동의 화면」의 설정을 실시하지 않으면 프라이빗 데이터에의 액세스가 100회까지로 제한된다고 해
또한 "oauth 동의 화면"의 설정이 번거롭기 때문에 "서비스 계정"을 사용하는 방법을 시도하고 싶습니다.
서비스 계정 만들기
이하에 입력을 실시해 작성.
완성된 서비스 계정 링크를 클릭
키 만들기를 클릭
JSON 선택
여기에서 다운로드한 Json 내용의 정보를 사용하여 GoogleAPI를 호출합니다.
클라이언트 라이브러리를 사용하여 약속 얻기
Nuget에서 캘린더 용 DLL을 다운로드합니다.
그런 다음 생성한 서비스 계정을 조작할 캘린더를 게시합니다.
대상 캘린더 설정에서 특정 사용자와 공유할 때 추가합니다.
이메일 주소에 서비스 계정의 이메일 주소를 입력합니다.
※다운로드한 JSON의 client_email에도 있습니다.
샘플 코드 구현
이하 .Net의 샘플이 공식적으로 있었으므로, 그쪽을 참고로 해 보겠습니다.
.Net Sample
우선 고피하고, 환경에 의존하는 곳은 변경.
또, 서비스 어카운트로 인증할 필요가 있기 때문에 이하를 참고로 해, credential를 작성하는 곳은 재작성했다.
Google Calendar API ServiceAccountCredential
using Google.Apis.Auth.OAuth2;
using Google.Apis.Calendar.v3;
using Google.Apis.Services;
using Google.Apis.Util.Store;
using Newtonsoft.Json.Linq;
using System;
using System.IO;
using System.Threading;
namespace GoogleAPITest
{
public class Program
{
// If modifying these scopes, delete your previously saved credentials
// at ~/.credentials/calendar-dotnet-quickstart.json
private static string[] Scopes = { CalendarService.Scope.CalendarReadonly };
private static string ApplicationName = "Google Calendar API .NET Quickstart";
public static void Main(string[] args)
{
var jObject = JObject.Parse(File.ReadAllText(
@"C:\job\TestProject\GoogleAPITest\testproject-269217-813bf9be17a5.json"));
var serviceAccountEmail = jObject["client_email"].ToString();
var certificate = jObject["private_key"].ToString();
var credential = new ServiceAccountCredential(
new ServiceAccountCredential.Initializer(serviceAccountEmail)
{
Scopes = new[] { CalendarService.Scope.Calendar }
}.FromPrivateKey(certificate));
// Create Google Calendar API service.
var service = new CalendarService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = ApplicationName,
});
// おそらく不必要
// Define parameters of request.
//var request = service.Events.List("primary");
//request.TimeMin = DateTime.Now;
//request.ShowDeleted = false;
//request.SingleEvents = true;
//request.MaxResults = 10;
//request.OrderBy = EventsResource.ListRequest.OrderByEnum.StartTime;
// ここで第2引数にサービスアカウントに公開したカレンダーIDを指定する
var request = new EventsResource.ListRequest(service, "公開したカレンダーのカレンダーID");
// List events.
var events = request.Execute();
Console.WriteLine("Upcoming events:");
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;
}
Console.WriteLine("{0} start:({1}) end:({2})", eventItem.Summary, when, eventItem.End.DateTime.ToString());
}
}
else
{
Console.WriteLine("No upcoming events found.");
}
Console.Read();
}
}
}
게시한 캘린더의 최근
실행 결과
성공적으로 얻은 것 같습니다. (옛날의 이벤트는 무시로···)
이번은 여기까지 합니다.
다음 번에는 캘린더 업데이트를 시도해 보겠습니다.
다음 번
Reference
이 문제에 관하여(Google Calendar API 사용하기 #1), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/GodPhwng/items/4310586e1ec3bda4d91f
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
공식적으로 입문이 있었습니다.
Get Started with the Calendar API
분명히 API를 사용하려면 자격 증명을 만들어야합니다.
다음 세 가지 방법이 있다는 것입니다.
OAuth 클라이언트 ID를 이용하는 방법으로는, 곧바로 인증 정보를 작성할 수 있습니다만, 「oauth 동의 화면」의 설정을 실시하지 않으면 프라이빗 데이터에의 액세스가 100회까지로 제한된다고 해
또한 "oauth 동의 화면"의 설정이 번거롭기 때문에 "서비스 계정"을 사용하는 방법을 시도하고 싶습니다.
서비스 계정 만들기
이하에 입력을 실시해 작성.
완성된 서비스 계정 링크를 클릭
키 만들기를 클릭
JSON 선택
여기에서 다운로드한 Json 내용의 정보를 사용하여 GoogleAPI를 호출합니다.
클라이언트 라이브러리를 사용하여 약속 얻기
Nuget에서 캘린더 용 DLL을 다운로드합니다.
그런 다음 생성한 서비스 계정을 조작할 캘린더를 게시합니다.
대상 캘린더 설정에서 특정 사용자와 공유할 때 추가합니다.
이메일 주소에 서비스 계정의 이메일 주소를 입력합니다.
※다운로드한 JSON의 client_email에도 있습니다.
샘플 코드 구현
이하 .Net의 샘플이 공식적으로 있었으므로, 그쪽을 참고로 해 보겠습니다.
.Net Sample
우선 고피하고, 환경에 의존하는 곳은 변경.
또, 서비스 어카운트로 인증할 필요가 있기 때문에 이하를 참고로 해, credential를 작성하는 곳은 재작성했다.
Google Calendar API ServiceAccountCredential
using Google.Apis.Auth.OAuth2;
using Google.Apis.Calendar.v3;
using Google.Apis.Services;
using Google.Apis.Util.Store;
using Newtonsoft.Json.Linq;
using System;
using System.IO;
using System.Threading;
namespace GoogleAPITest
{
public class Program
{
// If modifying these scopes, delete your previously saved credentials
// at ~/.credentials/calendar-dotnet-quickstart.json
private static string[] Scopes = { CalendarService.Scope.CalendarReadonly };
private static string ApplicationName = "Google Calendar API .NET Quickstart";
public static void Main(string[] args)
{
var jObject = JObject.Parse(File.ReadAllText(
@"C:\job\TestProject\GoogleAPITest\testproject-269217-813bf9be17a5.json"));
var serviceAccountEmail = jObject["client_email"].ToString();
var certificate = jObject["private_key"].ToString();
var credential = new ServiceAccountCredential(
new ServiceAccountCredential.Initializer(serviceAccountEmail)
{
Scopes = new[] { CalendarService.Scope.Calendar }
}.FromPrivateKey(certificate));
// Create Google Calendar API service.
var service = new CalendarService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = ApplicationName,
});
// おそらく不必要
// Define parameters of request.
//var request = service.Events.List("primary");
//request.TimeMin = DateTime.Now;
//request.ShowDeleted = false;
//request.SingleEvents = true;
//request.MaxResults = 10;
//request.OrderBy = EventsResource.ListRequest.OrderByEnum.StartTime;
// ここで第2引数にサービスアカウントに公開したカレンダーIDを指定する
var request = new EventsResource.ListRequest(service, "公開したカレンダーのカレンダーID");
// List events.
var events = request.Execute();
Console.WriteLine("Upcoming events:");
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;
}
Console.WriteLine("{0} start:({1}) end:({2})", eventItem.Summary, when, eventItem.End.DateTime.ToString());
}
}
else
{
Console.WriteLine("No upcoming events found.");
}
Console.Read();
}
}
}
게시한 캘린더의 최근
실행 결과
성공적으로 얻은 것 같습니다. (옛날의 이벤트는 무시로···)
이번은 여기까지 합니다.
다음 번에는 캘린더 업데이트를 시도해 보겠습니다.
다음 번
Reference
이 문제에 관하여(Google Calendar API 사용하기 #1), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/GodPhwng/items/4310586e1ec3bda4d91f
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Nuget에서 캘린더 용 DLL을 다운로드합니다.
그런 다음 생성한 서비스 계정을 조작할 캘린더를 게시합니다.
대상 캘린더 설정에서 특정 사용자와 공유할 때 추가합니다.
이메일 주소에 서비스 계정의 이메일 주소를 입력합니다.
※다운로드한 JSON의 client_email에도 있습니다.
샘플 코드 구현
이하 .Net의 샘플이 공식적으로 있었으므로, 그쪽을 참고로 해 보겠습니다.
.Net Sample
우선 고피하고, 환경에 의존하는 곳은 변경.
또, 서비스 어카운트로 인증할 필요가 있기 때문에 이하를 참고로 해, credential를 작성하는 곳은 재작성했다.
Google Calendar API ServiceAccountCredential
using Google.Apis.Auth.OAuth2;
using Google.Apis.Calendar.v3;
using Google.Apis.Services;
using Google.Apis.Util.Store;
using Newtonsoft.Json.Linq;
using System;
using System.IO;
using System.Threading;
namespace GoogleAPITest
{
public class Program
{
// If modifying these scopes, delete your previously saved credentials
// at ~/.credentials/calendar-dotnet-quickstart.json
private static string[] Scopes = { CalendarService.Scope.CalendarReadonly };
private static string ApplicationName = "Google Calendar API .NET Quickstart";
public static void Main(string[] args)
{
var jObject = JObject.Parse(File.ReadAllText(
@"C:\job\TestProject\GoogleAPITest\testproject-269217-813bf9be17a5.json"));
var serviceAccountEmail = jObject["client_email"].ToString();
var certificate = jObject["private_key"].ToString();
var credential = new ServiceAccountCredential(
new ServiceAccountCredential.Initializer(serviceAccountEmail)
{
Scopes = new[] { CalendarService.Scope.Calendar }
}.FromPrivateKey(certificate));
// Create Google Calendar API service.
var service = new CalendarService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = ApplicationName,
});
// おそらく不必要
// Define parameters of request.
//var request = service.Events.List("primary");
//request.TimeMin = DateTime.Now;
//request.ShowDeleted = false;
//request.SingleEvents = true;
//request.MaxResults = 10;
//request.OrderBy = EventsResource.ListRequest.OrderByEnum.StartTime;
// ここで第2引数にサービスアカウントに公開したカレンダーIDを指定する
var request = new EventsResource.ListRequest(service, "公開したカレンダーのカレンダーID");
// List events.
var events = request.Execute();
Console.WriteLine("Upcoming events:");
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;
}
Console.WriteLine("{0} start:({1}) end:({2})", eventItem.Summary, when, eventItem.End.DateTime.ToString());
}
}
else
{
Console.WriteLine("No upcoming events found.");
}
Console.Read();
}
}
}
게시한 캘린더의 최근
실행 결과
성공적으로 얻은 것 같습니다. (옛날의 이벤트는 무시로···)
이번은 여기까지 합니다.
다음 번에는 캘린더 업데이트를 시도해 보겠습니다.
다음 번
Reference
이 문제에 관하여(Google Calendar API 사용하기 #1), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/GodPhwng/items/4310586e1ec3bda4d91f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)