Merhaba, bu yazıda sizlere C# ile Google Calendar API Etkinlik Listeleme hakkında bilgi vereceğim. Bir önceki yazımızda C# ile Merkez Bankası Döviz Kurlarını Çekme hakkında bilgi verdim. Daha önce Google Calendar API ile Etkinlik oluşturma hakkında bilgi vermiştim.
Google Calendar API için Gereksinimler
Geliştirmeye başlamadan önce şu gereksinimleri sağlıyor olmalısınız:
- Visual Studio 2013 ve sonrası.
- İnternet ve tarayıcı.
- Google Takvim uygulamasının aktif olduğu bir google hesabı.
Bu gereksinimleri muhtemelen sağlıyorsunuz. En azından böyle bir makaleye gelmiş iseniz bu gereksinimlerde üçü de sizde var demektir. Ardından şu adrese gidelim. Karşınıza gelen ilk ekranda “Enable The Google Calendar API” buttonuna tıklayalım. Tekrar bir ekran açılacak orada “Download Client Configuration” buttonuna tıklayalım. “credentials.json” adında bir dosya indirilecektir. Bu dosyayı ben debug klasörüne atıyorum. Siz başka yol göstererek de yapabilirsiniz.
Artık her şeye sahibiz. Nuget package console’a giderek şunu yazalım:
1 | Install-Package Google.Apis.Calendar.v3 |
Kütüphaneleri Projede Kullanma
1 2 3 4 5 6 | using Google.Apis.Auth.OAuth2; using Google.Apis.Calendar.v3; using Google.Apis.Calendar.v3.Data; using Google.Apis.Services; using Google.Apis.Util.Store; |
Projemizin public class’ ının hemen altına static dizi ve değişkenlerimiz tanımlıyoruz. Bunları token ve service kısmında kullanacağız.
1 2 | static string[] Scopes = { CalendarService.Scope.CalendarReadonly }; static string ApplicationName = "Google Calendar API .NET Quickstart"; |
Google ile birlikte gelen kütüphanede yer alan UserCredential sınıfını kullanarak kullanıcı authorization işlemlerini yapmalıyız.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | UserCredential credential; using (var stream = new FileStream("credentials.json", FileMode.Open, FileAccess.Read)) { string credPath = "token.json"; credential = GoogleWebAuthorizationBroker.AuthorizeAsync( GoogleClientSecrets.Load(stream).Secrets, Scopes, "user", CancellationToken.None, new FileDataStore(credPath, true)).Result; } |
Artık uygulama scope olarak user tarafında var olacak ve takvim servisiyle entegre olarak çalışacak duruma gelmiş halde. Bu işlemin ardından servis oluşturalım. Bu servis parametre olarak uygulama adını ve credential ile authorize edilen class instance’ını alıyor.
1 2 3 4 5 | var service = new CalendarService(new BaseClientService.Initializer() { HttpClientInitializer = credential, ApplicationName = ApplicationName, }); |
Service ile etkinlik listesinin kriterlerini belirliyoruz. Ben “TimeMin” olarak bugünün tarihini verdim. “TimeMax” kriteri de bulunmaktadır. Bunları deniyebilirsiniz.
1 2 3 4 5 6 | EventsResource.ListRequest request = service.Events.List("primary"); request.TimeMin = DateTime.Now.Date; request.ShowDeleted = false; request.SingleEvents = true; request.MaxResults = 10; request.OrderBy = EventsResource.ListRequest.OrderByEnum.StartTime; |
Etkinlik listesini ben messagebox olarak ekrana yazdırdım. Siz farklı işlemler yapabilirsiniz. Ben etkinlik başlığını ve zamanını listeledim. EventItem üzerinden farklı özellikler bulunmaktadır. Bunları kullanabilirsiniz. Program çalıştığında bir kerelik Gmail hesabınızdan izin vermeniz gerekmektedir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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; } MessageBox.Show(string.Format("{0} ({1})", eventItem.Summary, when)); } } else { MessageBox.Show("Etkinlik bulunamadı."); } |
Soru ve görüşleriniz için [email protected] adresine mail atabilirsiniz.