Google Calendar Settings

Overview

The synchronization between the Google Calendar and Totalview is based on a query user with access to the Google users’ calendar folder. The Totalview GoogleCalendar connector logs on to the Google Calendar service using the query user, and uses the Google Calendar API to query, create, update and delete appointments on behalf of the Google users.

This document describes how to create the query user and how to test the query user and the query user access to other users’ calendar folders.

The Totalview GoogleCalendar connector uses OAuth 2.0 for Server to Server Applications. This requires a service account with domain-wide authority to the Google Calendar API. The Totalview GoogleCalendar connector calls Google APIs on behalf of the service account to get access to users’ calendars.

See also

https://developers.google.com/identity/protocols/OAuth2ServiceAccount#delegatingauthority

https://developers.google.com/identity/protocols/OAuth2ServiceAccount

The following steps are required to setup access to users’ calendars.

  • Register the Totalview GoogleCalendar as a Google application project.

  • Enable the Google Calendar API for the project.

  • Add a service account with credential access to the project.

  • Enable G Suite Domain-wide Delegation

  • Create and configure the query user

Register the Totalview GoogleCalendar project

The project acts as a reference to the required functionality which the Totalview GoogleCalendar uses to get access to the users’ calendars.

1: Login to the Google developer console: https://console.developers.google.com

2: Select Project \ Create project

../../_images/1.png

3: Select New Project, enter a project name and press Create

../../_images/2.png

The Project ID is subsequently used in the web references, i.e. https://console.developers.google.com/apis/dashboard?project=totalview-calendar-sync

Enable the Google Calendar API

1: Login to the developer console library: https://console.developers.google.com/apis/library?project=totalview-calendar-sync

2: Find the Google Calendar API

../../_images/3.png

3: Select the Google Calendar API (Press on the Name in the list)

4: Select Enable

../../_images/4.png

The dashboard will now display the Google Calendar API in the Enabled APIs list:

../../_images/5.png

Add credentials to the project

Complete the following steps to add credentials:

1: Open the developer console security: https://console.developers.google.com/apis/credentials?project=totalview-calendar-sync

2: Select Service account key

../../_images/6.png

3: Enter a service account name and ensure that the key type is p12:

../../_images/7.png

4: Set the Role to Project.Owner.

5: Press Create.

6: This will create the account and download a P12 key file, also it will give you a password which is “notasecret”. Since the password is public it is important that you store the keyfile somewhere safe.

The Service Account ID, P12 key file and key file password are used when setting up the Totalview GoogleCalendar

Enable G Suite Domain-wide Delegation / Get a Client ID

To enable G Suite Domain-wide Delegation:

1: Open developer console service accounts: https://console.developers.google.com/iam-admin/serviceaccounts/project?project=totalview-calendar-sync

../../_images/8.png

2: Press the button under options and select Edit:

../../_images/9.png

3: Check Enable G Suite Domain-wide Delegation and enter a product name for the consent screen, and save.

../../_images/10.png

4: When the account is enabled for domain wide delegation it will also get a Client Id

../../_images/11.png

5: View Client ID and copy it, it will be used in the next step.

Creation and configuration of the query user

Complete the following steps to setup the query:

1: Login to the Google admin console: https://admin.google.com/

2: Select Security from the list of controls. If you don’t see Security listed, select More controls from the gray bar at the bottom of the page, then select Security from the list of controls. If you can’t see the controls, make sure you’re signed in as an administrator for the domain.

3: Select Show more and then Advanced settings from the list of options.

../../_images/12.png

4: Select Manage API client access in the Authentication section.

../../_images/13.png

5: In the Client Name field enter the service account’s Client ID. You can find your service account’s client ID in the Service accounts page. In the One or More API Scopes field enter the list of scopes that your application should be granted access to: https://www.googleapis.com/auth/calendar.

../../_images/14.png

6: Click Authorize – the client will be shown on the list below.

../../_images/15.png

Testing the query user

Use the Totalview GoogleCalendar test tool to test the query user’s access to Google Calendar.

The test tool is located in the <InstallDir>\InstallFiles\GoogleCalendar folder.

Add the Service Account ID, P12 key file and key file password and select “Connect Google Calendar”.

The setup parameters can also be added to the test tool application config file.

../../_images/16.png

Add a current user and some polling users to test.

Test that appointments can be received from the polling users, using the “Get all future appointments”.

../../_images/17.png

Test that an appointment can be created for the current user by using the “Add appointment”.

Common errors

If you get an error: “invalid_grant” or “Invalid JWT Signature”. There might be something wrong with the key file (the .p12 file). Try creating a new by going to https://console.developers.google.com/iam-admin/serviceaccounts/project?project=totalview-calendar-sync select options \ create key

../../_images/18.png

Select p12 and press CREATE

../../_images/19.png