Google Calendar - Google Workspace - Perform Google Workspace Domain-Wide Delegation of Authority

Google Calendar - Google Workspace - Perform Google Workspace Domain-Wide Delegation of Authority

It seems BlindMatrix needs to set up Google Authentication to login so the google calendars, email and other google products can sync with BlindMatrix.




Perform Google Workspace Domain-Wide
Delegation of Authority

Instantiate an Admin SDK Directory service object

The following examples make use of your service account's email address and private key file. The Java and Python versions use a P12-formatted key file, while the Go example uses a JSON-formatted key file.

import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.jackson.JacksonFactory;
import com.google.api.services.admin.directory.Directory;
import com.google.api.services.admin.directory.DirectoryScopes;
...

/** Email of the Service Account */
private static final String SERVICE_ACCOUNT_EMAIL = "<some-id>@developer.gserviceaccount.com";

/** Path to the Service Account's Private Key file */
private static final String SERVICE_ACCOUNT_PKCS12_FILE_PATH = "/path/to/<public_key_fingerprint>-privatekey.p12";

/**
 * Build and returns a Directory service object authorized with the service accounts
 * that act on behalf of the given user.
 *
 * @param userEmail The email of the user. Needs permissions to access the Admin APIs.
 * @return Directory service object that is ready to make requests.
 */

public static Directory getDirectoryService(String userEmail) throws GeneralSecurityException,
   
IOException, URISyntaxException {
 
HttpTransport httpTransport = new NetHttpTransport();
 
JacksonFactory jsonFactory = new JacksonFactory();
 
GoogleCredential credential = new GoogleCredential.Builder()
     
.setTransport(httpTransport)
     
.setJsonFactory(jsonFactory)
     
.setServiceAccountId(SERVICE_ACCOUNT_EMAIL)
     
.setServiceAccountScopes(DirectoryScopes.ADMIN_DIRECTORY_USERS)
     
.setServiceAccountUser(userEmail)
     
.setServiceAccountPrivateKeyFromP12File(
         
new java.io.File(SERVICE_ACCOUNT_PKCS12_FILE_PATH))
     
.build();
 
Directory service = new Directory.Builder(httpTransport, jsonFactory, null)
     
.setHttpRequestInitializer(credential).build();
  return service;