> ## Documentation Index
> Fetch the complete documentation index at: https://docs.gorbit.cloud/llms.txt
> Use this file to discover all available pages before exploring further.

# Google Drive OAuth

> Set up Google Drive OAuth for the connector

This section walks through setting up the Google Drive connector using a OAuth-enabled Google App.
Anyone can do this (even without a paid Google Workspace)!

If you're an organization with a Google Workspace, and you'd rather use a Service Account to access Google Drive,
checkout the section [here](./service_account).

### Authorization

<Steps>
  <Step title="Create Google Cloud Project">
    * [https://console.cloud.google.com/projectcreate](https://console.cloud.google.com/projectcreate)
  </Step>

  <Step title="Enable Google Drive API">
    * On the left panel, open **APIs & services**
    * Go to **Enabled APIs and services**
    * On the top click **+ENABLE APIS AND SERVICES**
    * Search for **Google Drive API** and click **ENABLE**
    * Alternatively visit this [link](https://console.cloud.google.com/flows/enableapi?apiid=drive.googleapis.com),
      select your project and enable the **Google Drive API**
  </Step>

  <Step title="Enable Admin SDK API">
    * Click on **+ENABLE APIS AND SERVICES** again.
    * Search for **Admin SDK API** and click **ENABLE**
    * Alternatively visit this [link](https://console.cloud.google.com/flows/enableapi?apiid=admin.googleapis.com),
      select your project and enable the **Admin SDK API**
  </Step>

  <Step title="Enable Google Sheets API">
    * Click on **+ENABLE APIS AND SERVICES** again.
    * Search for **Google Sheets API** and click **ENABLE**
    * Alternatively visit this [link](https://console.cloud.google.com/flows/enableapi?apiid=sheets.googleapis.com),
      select your project and enable the **Google Sheets API**
  </Step>

  <Step title="Enable Google Docs API">
    * Click on **+ENABLE APIS AND SERVICES** again.
    * Search for **Google Docs API** and click **ENABLE**
    * Alternatively visit this [link](https://console.cloud.google.com/flows/enableapi?apiid=docs.googleapis.com),
      select your project and enable the **Google Docs API**

    <img className="rounded-image" src="https://mintcdn.com/gorbit/klR7erNMN33AvYm0/assets/admins/connectors/google_drive/GoogleDriveEnableAPI.png?fit=max&auto=format&n=klR7erNMN33AvYm0&q=85&s=d6fce867a6fcd257a7fc9a9f205a67ba" alt="Google Cloud Console enabling Google Docs API for the project" width="808" height="497" data-path="assets/admins/connectors/google_drive/GoogleDriveEnableAPI.png" />
  </Step>

  <Step title="Set up OAuth consent screen">
    * Under **APIs & services**, select the **OAuth consent screen** tab
    * If you don't have a **Google Organization** select **External** for **User Type**
    * Call the app Gorbit (or whatever you want)
    * For the required emails, use any email of your choice or `founders@gorbit.app`
      if you wish for the Gorbit team to help handle issues.
    * Click **SAVE AND CONTINUE**
  </Step>

  <Step title="Set up scopes">
    * Add the scope `.../auth/drive.readonly` for `Google Drive API`
    * Add the scope `.../auth/drive.metadata.readonly` for `Google Drive API`
    * Add the scope `.../auth/admin.directory.user.readonly` for `Admin SDK API`
    * Add the scope `.../auth/admin.directory.group.readonly` for `Admin SDK API`

    <img className="rounded-image" src="https://mintcdn.com/gorbit/klR7erNMN33AvYm0/assets/admins/connectors/google_drive/GoogleDriveScopes.png?fit=max&auto=format&n=klR7erNMN33AvYm0&q=85&s=ea720f67953c4cbb77865b1d90b2b992" alt="OAuth consent screen scopes for Google Drive, Admin SDK, Sheets, and Docs" width="1058" height="1174" data-path="assets/admins/connectors/google_drive/GoogleDriveScopes.png" />
  </Step>

  <Step title="Set up test users">
    * This is only applicable for users without a Google Organization.
    * Typically for a company, Gorbit would be set up as an internal app so this step would
      not apply.
    * Add at least one test user email. Only the email accounts added here will be allowed to
      run the OAuth flow to index new documents.
    * Click **SAVE AND CONTINUE**, review the changes and click **BACK TO DASHBOARD**
  </Step>

  <Step title="Create credentials">
    * Go to the **Credentials** tab and select **+ CREATE CREDENTIALS** -> **OAuth client ID**

    <img className="rounded-image" src="https://mintcdn.com/gorbit/klR7erNMN33AvYm0/assets/admins/connectors/google_drive/GoogleDriveCredential.png?fit=max&auto=format&n=klR7erNMN33AvYm0&q=85&s=c9297ec7c7cf3f3bb4ef95da6fd22bff" alt="Creating OAuth client ID in Google Cloud Console" width="2996" height="1720" data-path="assets/admins/connectors/google_drive/GoogleDriveCredential.png" />

    * Choose **Web application** and give it some name like `GorbitConnector`
    * Add a **Authorized JavaScript origins**
    * `http://localhost:3000` if self-hosting
    * `https://<INTERNAL_DEPLOYMENT_URL>` if you have setup Gorbit for production use
    * `https://cloud.gorbit.app` if you are using the Gorbit Cloud service
    * Add a **Authorized redirect URIs**
    * `http://localhost:3000/admin/connectors/google-drive/auth/callback` if self-hosting
    * `https://<INTERNAL_DEPLOYMENT_URL>/admin/connectors/google-drive/auth/callback` if you have setup Gorbit for production use
    * `https://cloud.gorbit.app/admin/connectors/google-drive/auth/callback` if you are using the Gorbit Cloud service

    <img className="rounded-image" src="https://mintcdn.com/gorbit/klR7erNMN33AvYm0/assets/admins/connectors/google_drive/DriveCredentials.png?fit=max&auto=format&n=klR7erNMN33AvYm0&q=85&s=90b673a24dcda10c8692d8ce7321935b" alt="Configuring authorized origins and redirect URIs for Google Drive OAuth client" width="675" height="1116" data-path="assets/admins/connectors/google_drive/DriveCredentials.png" />

    * Click create and on the right hand side next to **Client secret**, there is an option to
      download the credentials as a JSON. Download the JSON for use in the next step.

    <img className="rounded-image" src="https://mintcdn.com/gorbit/klR7erNMN33AvYm0/assets/admins/connectors/google_drive/DriveDownloadCredentials.png?fit=max&auto=format&n=klR7erNMN33AvYm0&q=85&s=70bd758442b88095e943e2dc06b30f3a" alt="Download OAuth client JSON credentials from Google Cloud Console" width="638" height="684" data-path="assets/admins/connectors/google_drive/DriveDownloadCredentials.png" />
  </Step>
</Steps>

### Indexing

First, navigate to the Admin Panel and select the Google Drive connector.

Then, create a new credential, then upload the key you downloaded in the final step. From there,
click **Authenticate with Google Drive** and continue with the account you want to use to index Google Drive.

<img className="rounded-image" src="https://mintcdn.com/gorbit/klR7erNMN33AvYm0/assets/admins/connectors/google_drive/OAuthCredential.png?fit=max&auto=format&n=klR7erNMN33AvYm0&q=85&s=c46651e786df84b6f55db3cca4fb59db" alt="Gorbit Google Drive connector showing OAuth credential selection" width="2256" height="1472" data-path="assets/admins/connectors/google_drive/OAuthCredential.png" />

Once complete, select the newly created credential, and click the **Continue** button to configure the connector!

<Note>
  If you plan on using permission syncing for this connector,
  the account performing the OAuth flow must have an Admin role in the Google Workspace that has access to the
  following:

  * Admin console privileges -> Services -> Drive and Docs -> Settings
  * Admin API privileges -> Users -> Read
  * Admin API privileges -> Groups -> Read
  * Admin API privileges -> Organization Units -> Read

  This can be set by an admin in the admin panel of the Google Workspace under Account > Admin roles.
</Note>
