Prerequisites
Before diving in, ensure you have the following:
- Visual Studio: A recent version for developing your .NET application.
- .NET SDK: Make sure you have the latest version installed.
- Google Account: Required for accessing the Google Tasks API.
- Google Cloud Project:Set up in the Google Cloud Console.
Step 1: Setting Up Your Google Cloud Project
Create a New Project:
- Navigate to the Google Cloud Console.
- Click on Select a project, then New Project.
- Name your project and click Create.
Enable the Google Tasks API:
- In the project dashboard, go to Library.
- Search for "Google Calendar API" and enable it.
Create Credentials:
- Go to the Credentials section and click on Create Credentials.
- Choose OAuth client ID.
- Configure the consent screen with the required fields.
- Set the application type to Web application.
- Add authorized redirect URIs (e.g., http://localhost:5000/signin-google).
- Save your credentials and note the Client ID and Client Secret.
Step 2: Creating a .NET Application
Create a New Project:
Open Visual Studio and create a new ASP.NET Core Web Application.
Choose the Web Application (Model-View-Controller) template.
Install Required NuGet Packages: Open the Package Manager Console and run the following command:
Install-Package Google.Apis.Calendar.v3
Install-Package Google.Apis.Auth
Create Event Model:
public class CalendarEvent
{
public string Summary { get; set; }
public string Location { get; set; }
public string Description { get; set; }
public DateTime Start { get; set; }
public DateTime End { get; set; }
}
Create Google Calendar Service
Create _ICalendarService _Interface:
public interface ICalendarService
{
void CreateEvent(CalendarEvent calendarEvent);
}
Create an implementation of this interface:
using Google.Apis.Calendar.v3;
using Google.Apis.Calendar.v3.Data;
using Google.Apis.Auth.OAuth2;
using Google.Apis.Services;
using Google.Apis.Util.Store;
using System;
using System.IO;
using System.Threading;
public class CalendarService : ICalendarService
{
private readonly CalendarService _calendarService;
public CalendarService()
{
_calendarService = InitializeService();
}
private CalendarService InitializeService()
{
UserCredential credential;
using (var stream = new FileStream("credentials.json", FileMode.Open, FileAccess.Read))
{
string credPath = "token.json";
credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
GoogleClientSecrets.Load(stream).Secrets,
new[] { CalendarService.Scope.Calendar },
"user",
CancellationToken.None,
new FileDataStore(credPath, true)).Result;
}
return new CalendarService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = "Event Scheduler",
});
}
public void CreateEvent(CalendarEvent calendarEvent)
{
var newEvent = new Event()
{
Summary = calendarEvent.Summary,
Location = calendarEvent.Location,
Description = calendarEvent.Description,
Start = new EventDateTime()
{
DateTime = calendarEvent.Start,
TimeZone = "America/Los_Angeles",
},
End = new EventDateTime()
{
DateTime = calendarEvent.End,
TimeZone = "America/Los_Angeles",
},
};
var calendarId = "primary";
_calendarService.Events.Insert(newEvent, calendarId).Execute();
}
}
Add Services
Register Services in Startup.cs:
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
services.AddScoped<ICalendarService, CalendarService>();
services.Configure<GoogleApiSettings>(builder.Configuration.GetSection(nameof(GoogleApiSettings)));
}
Configure AppSettings.json
"GoogleApiSettings": {
"ClientId": "your client id",
"ClientSecret": "your client secret",
"Scope": [ "https://www.googleapis.com/auth/calendar" ],
"ApplicationName": "Google Canlendar Api",
"User": "user",
"CalendarId": "primary"
}
Create CalendarController:
using Microsoft.AspNetCore.Mvc;
public class CalendarController : Controller
{
private readonly ICalendarService _calendarService;
public CalendarController(ICalendarService calendarService)
{
_calendarService = calendarService;
}
[HttpPost]
public IActionResult CreateEvent(CalendarEvent newEvent)
{
_calendarService.CreateEvent(newEvent);
return RedirectToAction("Index");
}
}
Conclusion
Integrating Google Calendar API into your .NET application enables users to manage events seamlessly.
With the powerful combination of .NET and Google Calendar API, the possibilities for building robust event management solutions are virtually limitless. Happy coding!
Top comments (2)
Hello I'm getting error 400
Hello did you get your credentials from Google 400 is usually a bad request error. Configure app settings using valid credentials