Google API v3 for dotnet; using the calendar with an API key

后端 未结 1 2004
伪装坚强ぢ
伪装坚强ぢ 2021-01-16 09:50

I\'m trying to read my own Google calendar with the v3 API (http://code.google.com/p/google-api-dotnet-client/). What I eventually want is to display my own calendar from Go

1条回答
  •  傲寒
    傲寒 (楼主)
    2021-01-16 10:04

    Hi for me this works:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using Google.Apis.Calendar;
    using Google.Apis.Calendar.v3;
    using Google.Apis.Authentication;
    using Google.Apis.Authentication.OAuth2;
    using Google.Apis.Authentication.OAuth2.DotNetOpenAuth;
    using DotNetOpenAuth.OAuth2;
    using System.Diagnostics;
    using Google.Apis.Calendar.v3.Data;
    
    namespace consoleGoogleResearch
    {
        class Program
        {
            public static void Main(string[] args)
            {            
                // Register the authenticator. The Client ID and secret have to be copied from the API Access
                // tab on the Google APIs Console.
                var provider = new NativeApplicationClient(GoogleAuthenticationServer.Description);
                provider.ClientIdentifier = "fill_in_yours";
                provider.ClientSecret = "fill_in_yours";           
                // Create the service. This will automatically call the authenticator.
                var service = new CalendarService(new OAuth2Authenticator(provider, GetAuthentication));
    
                Google.Apis.Calendar.v3.CalendarListResource.ListRequest clrq = service.CalendarList.List();
                var result = clrq.Fetch();
    
                if (result.Error != null)
                {
                    Console.WriteLine(result.Error.Message);
                    Console.ReadKey();
                    return;
                }
    
                Console.WriteLine("Calendars: ");           
                foreach (CalendarListEntry calendar in result.Items)
                {
                    Console.WriteLine("{0}", calendar.Id);
                    Console.WriteLine("\tAppointments:");
                    Google.Apis.Calendar.v3.EventsResource.ListRequest elr = service.Events.List(calendar.Id);
                    var events = elr.Fetch();
                    foreach (Event e in events.Items)
                    {
                        Console.WriteLine("\t From: {0} To: {1} Description: {2}, Location: {3}", e.Start, e.End, e.Description, e.Location);
                    }
                }            
                Console.ReadKey();
            }        
    
            private static IAuthorizationState GetAuthentication(NativeApplicationClient arg)
            {            
                // Get the auth URL:
                //IAuthorizationState state = new AuthorizationState(new[] { CalendarService.Scopes.Calendar.ToString() });
                IAuthorizationState state = new AuthorizationState(new[] { "https://www.google.com/calendar/feeds" });
                state.Callback = new Uri(NativeApplicationClient.OutOfBandCallbackUrl);
                Uri authUri = arg.RequestUserAuthorization(state);
    
                // Request authorization from the user (by opening a browser window):
                Process.Start(authUri.ToString());
                Console.Write("  Authorization Code: ");
                string authCode = Console.ReadLine();
    
                // Retrieve the access token by using the authorization code:
                return arg.ProcessUserAuthorization(authCode, state);
             }
        }
    }
    

    0 讨论(0)
提交回复
热议问题