I am trying to share a service account with any user's calendar and would like to know if anyone knows how to do so on the backend which is node.js or the frontend which is flutter/dart so that the user has to do as little as possible to add the service account to their calendar.
When onboarding a user on the flutter/dart front end I would like to ask a user if a service account can be added to a calendar on their account so the system can handle certain scheduling tasks for the user. I am assuming that the user is not technical. Ideally, I would like to add a new calendar to the user's account and share the service account with that.
After onboarding I would like all actions which the system does with the users calendar to take place on a node.js server using the service account.
I would like the service account to be able to read events from the user's calendar, add events, and find times during which the user is not already booked.
I have searched the internet for many hours and there is very little information about how to do this.
Also, will using a service account to view and modify and find available times on a user's calendar only work with workplace calendars and not with free calendars?
There are services/methods available using Calendar API that can achieve the functionality you want, you may look into the following:
Now, for creating and authorizing the service account for this, you may check this reference link for Authorizing Requests to the Google Calendar API.
Bear in mind that read/write access to events/calendars requires the correct scope as define on the link above.
Here's the OAuth 2.0 scope information for the Google Calendar API:
https://www.googleapis.com/auth/calendar read/write access to Calendars https://www.googleapis.com/auth/calendar.readonly read-only access to Calendars https://www.googleapis.com/auth/calendar.events read/write access to Events https://www.googleapis.com/auth/calendar.events.readonly read-only access to Events https://www.googleapis.com/auth/calendar.settings.readonly read-only access to Settings https://www.googleapis.com/auth/calendar.addons.execute run as a Calendar add-on
And lastly, service accounts have no rights/authorization to access personal Gmail accounts, since the Domain-wide delegation feature only applies to user accounts within your organization.