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

# Google Cloud Data OAuth 2.0 connector profile – StackOne setup guide

> Set up the OAuth 2.0 connector profile for Google Cloud Data in StackOne. One-time admin setup required before your users can link Google Cloud Data accounts via Hub.

<Warning>Cloud SQL Admin and Pub/Sub Admin roles (or Owner) on the target GCP project are required to complete this setup.</Warning>

<Panel>
  <div className="not-prose guides-scope-selector" data-guides-scope-selector data-guide-actions-json="[{&#x22;id&#x22;:&#x22;googleclouddata_list_pubsub_schemas&#x22;,&#x22;label&#x22;:&#x22;List Pub/Sub Schemas&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/pubsub&#x22;]},{&#x22;id&#x22;:&#x22;googleclouddata_get_pubsub_schema&#x22;,&#x22;label&#x22;:&#x22;Get Pub/Sub Schema&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/pubsub&#x22;]},{&#x22;id&#x22;:&#x22;googleclouddata_create_pubsub_schema&#x22;,&#x22;label&#x22;:&#x22;Create Pub/Sub Schema&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/pubsub&#x22;]},{&#x22;id&#x22;:&#x22;googleclouddata_delete_pubsub_schema&#x22;,&#x22;label&#x22;:&#x22;Delete Pub/Sub Schema&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/pubsub&#x22;]},{&#x22;id&#x22;:&#x22;googleclouddata_validate_pubsub_schema&#x22;,&#x22;label&#x22;:&#x22;Validate Pub/Sub Schema&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/pubsub&#x22;]},{&#x22;id&#x22;:&#x22;googleclouddata_update_pubsub_schema&#x22;,&#x22;label&#x22;:&#x22;Commit Pub/Sub Schema Revision&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/pubsub&#x22;]},{&#x22;id&#x22;:&#x22;googleclouddata_list_pubsub_subscriptions&#x22;,&#x22;label&#x22;:&#x22;List Pub/Sub Subscriptions&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/pubsub&#x22;]},{&#x22;id&#x22;:&#x22;googleclouddata_get_pubsub_subscription&#x22;,&#x22;label&#x22;:&#x22;Get Pub/Sub Subscription&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/pubsub&#x22;]},{&#x22;id&#x22;:&#x22;googleclouddata_create_pubsub_subscription&#x22;,&#x22;label&#x22;:&#x22;Create Pub/Sub Subscription&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/pubsub&#x22;]},{&#x22;id&#x22;:&#x22;googleclouddata_update_pubsub_subscription&#x22;,&#x22;label&#x22;:&#x22;Update Pub/Sub Subscription&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/pubsub&#x22;]},{&#x22;id&#x22;:&#x22;googleclouddata_delete_pubsub_subscription&#x22;,&#x22;label&#x22;:&#x22;Delete Pub/Sub Subscription&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/pubsub&#x22;]},{&#x22;id&#x22;:&#x22;googleclouddata_detach_pubsub_subscription&#x22;,&#x22;label&#x22;:&#x22;Detach Pub/Sub Subscription&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/pubsub&#x22;]},{&#x22;id&#x22;:&#x22;googleclouddata_pull_pubsub_messages&#x22;,&#x22;label&#x22;:&#x22;Pull Pub/Sub Messages&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/pubsub&#x22;]},{&#x22;id&#x22;:&#x22;googleclouddata_acknowledge_pubsub_messages&#x22;,&#x22;label&#x22;:&#x22;Acknowledge Pub/Sub Messages&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/pubsub&#x22;]},{&#x22;id&#x22;:&#x22;googleclouddata_modify_ack_deadline&#x22;,&#x22;label&#x22;:&#x22;Modify Ack Deadline&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/pubsub&#x22;]},{&#x22;id&#x22;:&#x22;googleclouddata_seek_pubsub_subscription&#x22;,&#x22;label&#x22;:&#x22;Seek Pub/Sub Subscription&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/pubsub&#x22;]},{&#x22;id&#x22;:&#x22;googleclouddata_list_pubsub_topics&#x22;,&#x22;label&#x22;:&#x22;List Pub/Sub Topics&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/pubsub&#x22;]},{&#x22;id&#x22;:&#x22;googleclouddata_get_pubsub_topic&#x22;,&#x22;label&#x22;:&#x22;Get Pub/Sub Topic&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/pubsub&#x22;]},{&#x22;id&#x22;:&#x22;googleclouddata_create_pubsub_topic&#x22;,&#x22;label&#x22;:&#x22;Create Pub/Sub Topic&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/pubsub&#x22;]},{&#x22;id&#x22;:&#x22;googleclouddata_update_pubsub_topic&#x22;,&#x22;label&#x22;:&#x22;Update Pub/Sub Topic&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/pubsub&#x22;]},{&#x22;id&#x22;:&#x22;googleclouddata_delete_pubsub_topic&#x22;,&#x22;label&#x22;:&#x22;Delete Pub/Sub Topic&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/pubsub&#x22;]},{&#x22;id&#x22;:&#x22;googleclouddata_publish_pubsub_messages&#x22;,&#x22;label&#x22;:&#x22;Publish Pub/Sub Messages&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/pubsub&#x22;]},{&#x22;id&#x22;:&#x22;googleclouddata_list_topic_subscriptions&#x22;,&#x22;label&#x22;:&#x22;List Topic Subscriptions&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/pubsub&#x22;]},{&#x22;id&#x22;:&#x22;googleclouddata_list_sql_backup_runs&#x22;,&#x22;label&#x22;:&#x22;List Cloud SQL Backup Runs&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/sqlservice.admin&#x22;]},{&#x22;id&#x22;:&#x22;googleclouddata_get_sql_backup_run&#x22;,&#x22;label&#x22;:&#x22;Get Cloud SQL Backup Run&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/sqlservice.admin&#x22;]},{&#x22;id&#x22;:&#x22;googleclouddata_create_sql_backup&#x22;,&#x22;label&#x22;:&#x22;Create Cloud SQL Backup&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/sqlservice.admin&#x22;]},{&#x22;id&#x22;:&#x22;googleclouddata_delete_sql_backup&#x22;,&#x22;label&#x22;:&#x22;Delete Cloud SQL Backup&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/sqlservice.admin&#x22;]},{&#x22;id&#x22;:&#x22;googleclouddata_restore_sql_backup&#x22;,&#x22;label&#x22;:&#x22;Restore Cloud SQL Backup&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/sqlservice.admin&#x22;]},{&#x22;id&#x22;:&#x22;googleclouddata_list_sql_databases&#x22;,&#x22;label&#x22;:&#x22;List Cloud SQL Databases&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/sqlservice.admin&#x22;]},{&#x22;id&#x22;:&#x22;googleclouddata_get_sql_database&#x22;,&#x22;label&#x22;:&#x22;Get Cloud SQL Database&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/sqlservice.admin&#x22;]},{&#x22;id&#x22;:&#x22;googleclouddata_create_sql_database&#x22;,&#x22;label&#x22;:&#x22;Create Cloud SQL Database&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/sqlservice.admin&#x22;]},{&#x22;id&#x22;:&#x22;googleclouddata_update_sql_database&#x22;,&#x22;label&#x22;:&#x22;Update Cloud SQL Database&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/sqlservice.admin&#x22;]},{&#x22;id&#x22;:&#x22;googleclouddata_delete_sql_database&#x22;,&#x22;label&#x22;:&#x22;Delete Cloud SQL Database&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/sqlservice.admin&#x22;]},{&#x22;id&#x22;:&#x22;googleclouddata_test_auth_googleclouddata&#x22;,&#x22;label&#x22;:&#x22;Test Auth&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/sqlservice.admin&#x22;]},{&#x22;id&#x22;:&#x22;googleclouddata_list_sql_instances&#x22;,&#x22;label&#x22;:&#x22;List Cloud SQL Instances&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/sqlservice.admin&#x22;]},{&#x22;id&#x22;:&#x22;googleclouddata_get_sql_instance&#x22;,&#x22;label&#x22;:&#x22;Get Cloud SQL Instance&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/sqlservice.admin&#x22;]},{&#x22;id&#x22;:&#x22;googleclouddata_create_sql_instance&#x22;,&#x22;label&#x22;:&#x22;Create Cloud SQL Instance&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/sqlservice.admin&#x22;]},{&#x22;id&#x22;:&#x22;googleclouddata_update_sql_instance&#x22;,&#x22;label&#x22;:&#x22;Update Cloud SQL Instance&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/sqlservice.admin&#x22;]},{&#x22;id&#x22;:&#x22;googleclouddata_delete_sql_instance&#x22;,&#x22;label&#x22;:&#x22;Delete Cloud SQL Instance&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/sqlservice.admin&#x22;]},{&#x22;id&#x22;:&#x22;googleclouddata_restart_sql_instance&#x22;,&#x22;label&#x22;:&#x22;Restart Cloud SQL Instance&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/sqlservice.admin&#x22;]},{&#x22;id&#x22;:&#x22;googleclouddata_start_sql_replica&#x22;,&#x22;label&#x22;:&#x22;Start Cloud SQL Replica&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/sqlservice.admin&#x22;]},{&#x22;id&#x22;:&#x22;googleclouddata_stop_sql_replica&#x22;,&#x22;label&#x22;:&#x22;Stop Cloud SQL Replica&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/sqlservice.admin&#x22;]},{&#x22;id&#x22;:&#x22;googleclouddata_failover_sql_instance&#x22;,&#x22;label&#x22;:&#x22;Failover Cloud SQL Instance&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/sqlservice.admin&#x22;]},{&#x22;id&#x22;:&#x22;googleclouddata_clone_sql_instance&#x22;,&#x22;label&#x22;:&#x22;Clone Cloud SQL Instance&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/sqlservice.admin&#x22;]},{&#x22;id&#x22;:&#x22;googleclouddata_list_sql_operations&#x22;,&#x22;label&#x22;:&#x22;List Cloud SQL Operations&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/sqlservice.admin&#x22;]},{&#x22;id&#x22;:&#x22;googleclouddata_list_sql_users&#x22;,&#x22;label&#x22;:&#x22;List Cloud SQL Users&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/sqlservice.admin&#x22;]},{&#x22;id&#x22;:&#x22;googleclouddata_get_sql_user&#x22;,&#x22;label&#x22;:&#x22;Get Cloud SQL User&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/sqlservice.admin&#x22;]},{&#x22;id&#x22;:&#x22;googleclouddata_create_sql_user&#x22;,&#x22;label&#x22;:&#x22;Create Cloud SQL User&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/sqlservice.admin&#x22;]},{&#x22;id&#x22;:&#x22;googleclouddata_update_sql_user&#x22;,&#x22;label&#x22;:&#x22;Update Cloud SQL User&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/sqlservice.admin&#x22;]},{&#x22;id&#x22;:&#x22;googleclouddata_delete_sql_user&#x22;,&#x22;label&#x22;:&#x22;Delete Cloud SQL User&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/sqlservice.admin&#x22;]}]">
    <div className="guides-scope-selector__title">Select Actions to adjust the guide</div>
    <div className="guides-scope-selector__muted guides-scope-selector__subtitle">Some actions may require additional configuration in the provider to be accessible. Choose the actions you need and the guide will be updated.</div>

    <div className="guides-scope-selector__toolbar">
      <input type="text" placeholder="Search actions..." className="guides-scope-selector__input guides-scope-selector__search" data-guide-action-search />

      <button type="button" className="guides-scope-selector__quick-btn" data-guide-select-all>Select all</button>
      <button type="button" className="guides-scope-selector__quick-btn" data-guide-clear>Clear</button>
    </div>

    <div className="guides-scope-selector__list">
      <div className="guides-scope-selector__list-header">
        <div className="guides-scope-selector__list-header-spacer" />

        <div className="guides-scope-selector__list-header-action">Action</div>
        <div className="guides-scope-selector__list-header-scopes">Scope(s)</div>
      </div>

      <div className="guides-scope-selector__muted guides-scope-selector__status" data-guide-loading>Loading actions...</div>
      <div className="guides-scope-selector__muted guides-scope-selector__status" data-guide-no-results hidden>No actions match your search.</div>
    </div>

    <div className="guides-scope-selector__url-section">
      <div className="guides-scope-selector__muted guides-scope-selector__label">Dynamic Guide URL</div>

      <div className="guides-scope-selector__url-row">
        <input type="text" readOnly className="guides-scope-selector__input guides-scope-selector__url-input" data-guide-url />

        <button type="button" className="guides-scope-selector__copy-btn guides-scope-selector__copy-btn--end" data-guide-copy-url>Copy URL</button>
      </div>

      <div className="guides-scope-selector__scopes-section">
        <div className="guides-scope-selector__muted guides-scope-selector__label">Scopes Selected</div>

        <div className="guides-scope-selector__scopes-row">
          <pre className="guides-scope-selector__input guides-scope-selector__scopes-output" role="textbox" aria-readonly="true" tabIndex={0} data-guide-scopes-output />

          <div className="guides-scope-selector__muted guides-scope-selector__side-controls">
            <div className="guides-scope-selector__side-label">Separator</div>

            <select className="guides-scope-selector__input guides-scope-selector__delimiter" data-guide-scope-delimiter>
              <option value="space">Space</option>
              <option value="comma">Comma</option>
              <option value="semicolon">Semicolon</option>
              <option value="pipe">Pipe</option>
              <option value="newline">Newline</option>
            </select>

            <button type="button" className="guides-scope-selector__copy-btn" data-guide-copy-scopes>Copy scopes</button>
          </div>
        </div>
      </div>
    </div>
  </div>
</Panel>

<section data-guide-section data-guide-scopes="">
  <h2>Create or select a Google Cloud project</h2>

  <p>To use Cloud SQL Admin API and Cloud Pub/Sub API with OAuth 2.0, you need a Google Cloud project.</p>

  <Steps>
    <Step title="Sign in to Google Cloud">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Sign in to your <a href="https://console.cloud.google.com/" target="_blank" rel="noopener noreferrer">Google Cloud Console</a>.</p>

        <img src="https://mintcdn.com/stackone-60/QOr5dejwqpPC0eS2/connectors/googleclouddata/images/oauth2-setup-login.png?fit=max&auto=format&n=QOr5dejwqpPC0eS2&q=85&s=a8dbae88b8c299b987eac547e48ed99e" alt="Google sign-in page for Google Cloud Platform with the Email or phone field and the Next button highlighted." width="1280" height="1080" data-path="connectors/googleclouddata/images/oauth2-setup-login.png" />
      </div>
    </Step>

    <Step title="Create or select a project">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Select an existing project from the dropdown at the top of the page, or create a new one by clicking <strong>New Project</strong> and filling in the <strong>Project name</strong>, <strong>Organization</strong>, and <strong>Parent resource</strong> fields, then clicking <strong>Create</strong>.</p>

        <img src="https://mintcdn.com/stackone-60/QOr5dejwqpPC0eS2/connectors/googleclouddata/images/oauth2-setup-create-project.png?fit=max&auto=format&n=QOr5dejwqpPC0eS2&q=85&s=688a21951e36c7930d4eaa2ae2ca59f3" alt="Select a resource dialog listing the projects in the organization, with the New project button highlighted." width="1800" height="544" data-path="connectors/googleclouddata/images/oauth2-setup-create-project.png" />
      </div>
    </Step>
  </Steps>
</section>

<section data-guide-section data-guide-scopes="">
  <h2>Enable the Cloud SQL Admin API and Cloud Pub/Sub API</h2>

  <p>Navigate to <strong>APIs & Services</strong> > <strong>Library</strong>, search for each API below, click on it, then click <strong>Enable</strong>. If it already shows <strong>Manage</strong>, the API is already enabled.<br /><br /><strong>Cloud Pub/Sub requires billing to be enabled on the project.</strong> If billing is not active, requesting the `https://www.googleapis.com/auth/pubsub` scope can cause the connection to fail. Enable billing under <strong>Billing</strong> in the Console, or omit the pubsub scope if you only need Cloud SQL.</p>

  <ul>
    <li>Cloud SQL Admin API</li>
    <li>Cloud Pub/Sub API</li>
  </ul>
</section>

<section data-guide-section data-guide-scopes="">
  <h2>Configure Google Auth Platform</h2>

  <p>Before creating OAuth credentials, ensure Google Auth Platform is configured.</p>

  <Steps>
    <Step title="Navigate to Google Auth Platform">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>In the Google Cloud Console, go to <strong>APIs & Services</strong> > <strong>OAuth consent screen</strong>. This will open the Google Auth Platform dashboard.</p>
      </div>
    </Step>

    <Step title="Start configuration">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>If you have already configured Auth Platform (the OAuth Overview page with usage metrics is shown), skip this step and navigate to the <strong>Branding</strong> page from the sidebar. Otherwise, you will see a <strong>Get started</strong> button — click it to begin the configuration process.</p>
      </div>
    </Step>

    <Step title="Enter app information">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Fill in the required fields for your application.</p>

        <ul>
          <li><strong>App name</strong>: Enter a name for your application (e.g., StackOne GCP Data Integration).</li>
          <li><strong>User support email</strong>: Select an email for user inquiries.</li>
          <li>Click <strong>Next</strong> to continue.</li>
          <li><strong>Note</strong>: If you already have an existing OAuth consent screen configuration, you can edit the details in this and the following steps.</li>
        </ul>

        <img src="https://mintcdn.com/stackone-60/QOr5dejwqpPC0eS2/connectors/googleclouddata/images/oauth2-setup-branding-info.png?fit=max&auto=format&n=QOr5dejwqpPC0eS2&q=85&s=5c875c745e5a8793b246adae32d5a074" alt="Branding page of the Google Auth Platform with the App information section, highlighting the App name and User support email fields (email redacted)." width="2500" height="1000" data-path="connectors/googleclouddata/images/oauth2-setup-branding-info.png" />
      </div>
    </Step>

    <Step title="Select audience">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Choose the appropriate user type for your application.</p>

        <ul>
          <li><strong>Internal</strong>: Only users within your Google Workspace organization can authorize (no app verification required).</li>
          <li><strong>External</strong>: Any Google account can authorize. You must publish the app (see the Publish the app step below) so refresh tokens do not expire after 7 days; production use may also require Google app verification.</li>
          <li>Click <strong>Next</strong> to continue.</li>
        </ul>

        <img src="https://mintcdn.com/stackone-60/QOr5dejwqpPC0eS2/connectors/googleclouddata/images/oauth2-setup-select-audience.png?fit=max&auto=format&n=QOr5dejwqpPC0eS2&q=85&s=7eb65d93fea39559d87341e5cc0aab32" alt="Audience page of the Google Auth Platform with the User type section highlighted, showing the current type and the Make internal button." width="2500" height="1000" data-path="connectors/googleclouddata/images/oauth2-setup-select-audience.png" />
      </div>
    </Step>

    <Step title="Enter contact information">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Provide email addresses for Google to notify you about any changes to your project. Click <strong>Next</strong> to continue.</p>
      </div>
    </Step>

    <Step title="Finish configuration">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Review your settings, agree to the Google API Services User Data Policy, and click <strong>Create</strong> to complete the setup.</p>
      </div>
    </Step>

    <Step title="Publish the app to Production">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>For <strong>External</strong> apps, open the <strong>Audience</strong> page in Google Auth Platform and check the <strong>Publishing status</strong>. If it shows <strong>Testing</strong>, click <strong>Publish app</strong> and confirm. Apps left in <strong>Testing</strong> have their refresh tokens expire after 7 days, which causes connected accounts to error and require reconnection. <strong>Internal</strong> (Google Workspace) apps do not need this step.</p>
      </div>
    </Step>
  </Steps>
</section>

<section data-guide-section data-guide-scopes="">
  <h2>Configure scopes</h2>

  <p>In Google Auth Platform, go to <strong>Data Access</strong> and click <strong>Add or Remove Scopes</strong> to configure the OAuth scopes your application needs.</p>

  <img src="https://mintcdn.com/stackone-60/QOr5dejwqpPC0eS2/connectors/googleclouddata/images/oauth2-setup-select-scopes.png?fit=max&auto=format&n=QOr5dejwqpPC0eS2&q=85&s=1d361e471d078c82489fd22d0ec1ee4a" alt="Data Access page of the Google Auth Platform with the Add or remove scopes button highlighted above the list of configured scopes." width="2500" height="1120" data-path="connectors/googleclouddata/images/oauth2-setup-select-scopes.png" />

  <Steps>
    <Step title="Add scopes">
      <div data-guide-step data-guide-scopes="https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/cloud-platform.read-only,https://www.googleapis.com/auth/sqlservice.admin,https://www.googleapis.com/auth/pubsub" data-guide-display-scopes-list="https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/cloud-platform.read-only,https://www.googleapis.com/auth/sqlservice.admin,https://www.googleapis.com/auth/pubsub">
        <div className="connector-guide-actions-badge" data-guide-actions-badge data-guide-actions-badge-scopes="https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/cloud-platform.read-only,https://www.googleapis.com/auth/sqlservice.admin,https://www.googleapis.com/auth/pubsub">
          <span>Enables actions: </span><span data-guide-actions-badge-labels>Acknowledge Pub/Sub Messages, Clone Cloud SQL Instance, Commit Pub/Sub Schema Revision, Create Cloud SQL Backup, Create Cloud SQL Database, Create Cloud SQL Instance, Create Cloud SQL User, Create Pub/Sub Schema, Create Pub/Sub Subscription, Create Pub/Sub Topic, Delete Cloud SQL Backup, Delete Cloud SQL Database, Delete Cloud SQL Instance, Delete Cloud SQL User, Delete Pub/Sub Schema, Delete Pub/Sub Subscription, Delete Pub/Sub Topic, Detach Pub/Sub Subscription, Failover Cloud SQL Instance, Get Cloud SQL Backup Run, Get Cloud SQL Database, Get Cloud SQL Instance, Get Cloud SQL User, Get Pub/Sub Schema, Get Pub/Sub Subscription, Get Pub/Sub Topic, List Cloud SQL Backup Runs, List Cloud SQL Databases, List Cloud SQL Instances, List Cloud SQL Operations, List Cloud SQL Users, List Pub/Sub Schemas, List Pub/Sub Subscriptions, List Pub/Sub Topics, List Topic Subscriptions, Modify Ack Deadline, Publish Pub/Sub Messages, Pull Pub/Sub Messages, Restart Cloud SQL Instance, Restore Cloud SQL Backup, Seek Pub/Sub Subscription, Start Cloud SQL Replica, Stop Cloud SQL Replica, Test Auth, Update Cloud SQL Database, Update Cloud SQL Instance, Update Cloud SQL User, Update Pub/Sub Subscription, Update Pub/Sub Topic, Validate Pub/Sub Schema</span>
        </div>

        <p>Add the required Google Cloud Platform scopes for your integration.</p>

        <div className="connector-guide-display-scopes" data-guide-display-scopes>
          <div className="connector-guide-scopes-container">
            <ul className="not-prose connector-guide-scopes-list">
              <li data-guide-display-scope="https://www.googleapis.com/auth/cloud-platform">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy https://www.googleapis.com/auth/cloud-platform" title="Copy scope" data-copy="https://www.googleapis.com/auth/cloud-platform">
                  <span className="connector-guide-scope-copy__label">[https://www.googleapis.com/auth/cloud-platform](https://www.googleapis.com/auth/cloud-platform)</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li data-guide-display-scope="https://www.googleapis.com/auth/cloud-platform.read-only">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy https://www.googleapis.com/auth/cloud-platform.read-only" title="Copy scope" data-copy="https://www.googleapis.com/auth/cloud-platform.read-only">
                  <span className="connector-guide-scope-copy__label">[https://www.googleapis.com/auth/cloud-platform.read-only](https://www.googleapis.com/auth/cloud-platform.read-only)</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li data-guide-display-scope="https://www.googleapis.com/auth/sqlservice.admin">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy https://www.googleapis.com/auth/sqlservice.admin" title="Copy scope" data-copy="https://www.googleapis.com/auth/sqlservice.admin">
                  <span className="connector-guide-scope-copy__label">[https://www.googleapis.com/auth/sqlservice.admin](https://www.googleapis.com/auth/sqlservice.admin)</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li data-guide-display-scope="https://www.googleapis.com/auth/pubsub">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy https://www.googleapis.com/auth/pubsub" title="Copy scope" data-copy="https://www.googleapis.com/auth/pubsub">
                  <span className="connector-guide-scope-copy__label">[https://www.googleapis.com/auth/pubsub](https://www.googleapis.com/auth/pubsub)</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>
            </ul>
          </div>
        </div>
      </div>
    </Step>

    <Step title="Select scopes from the list">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>In the <strong>Update selected scopes</strong> side panel that opens, check the required scopes from the list.</p>

        <img src="https://mintcdn.com/stackone-60/QOr5dejwqpPC0eS2/connectors/googleclouddata/images/oauth2-setup-select-scopes-side-panel.png?fit=max&auto=format&n=QOr5dejwqpPC0eS2&q=85&s=895cea67edf8a7e0c77f672973b7981b" alt="Update selected scopes side panel with the scope table highlighted, showing the Cloud SQL and Pub/Sub scopes checked." width="1480" height="1520" data-path="connectors/googleclouddata/images/oauth2-setup-select-scopes-side-panel.png" />
      </div>
    </Step>

    <Step title="Manually add scopes (if needed)">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>If a required scope is not shown in the list, use the <strong>Manually add scopes</strong> section.</p>

        <ul>
          <li>Enter the full scope URL in the input field.</li>
          <li>Click <strong>Add to table</strong>.</li>
        </ul>
      </div>
    </Step>

    <Step title="Apply and save">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Confirm and persist your scope configuration.</p>

        <ul>
          <li>Click <strong>Update</strong> to apply the selected scopes. The side panel will close.</li>
          <li>On the <strong>Data Access</strong> page, click <strong>Save</strong> to persist the scope configuration.</li>
        </ul>
      </div>
    </Step>
  </Steps>
</section>

<section data-guide-section data-guide-scopes="">
  <h2>Create OAuth 2.0 client credentials</h2>

  <p>Set up OAuth client credentials to authenticate with Cloud SQL Admin API and Cloud Pub/Sub API. If you already have an existing OAuth 2.0 client, you can reuse it by adding the StackOne redirect URI and generating a new secret.</p>

  <img src="https://mintcdn.com/stackone-60/QOr5dejwqpPC0eS2/connectors/googleclouddata/images/oauth2-setup-create-oauth-navigation.png?fit=max&auto=format&n=QOr5dejwqpPC0eS2&q=85&s=2e2fb7432b451d62e502055cf86fb673" alt="Credentials page under APIs & Services with the + Create credentials button highlighted." width="2500" height="380" data-path="connectors/googleclouddata/images/oauth2-setup-create-oauth-navigation.png" />

  <Steps>
    <Step title="Navigate to Credentials">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>In the Google Cloud Console, go to <strong>APIs & Services</strong> > <strong>Credentials</strong>. The <strong>+ Create credentials</strong> menu shown here is where both options below start.</p>

        <img src="https://mintcdn.com/stackone-60/QOr5dejwqpPC0eS2/connectors/googleclouddata/images/oauth2-setup-create-new-client.png?fit=max&auto=format&n=QOr5dejwqpPC0eS2&q=85&s=7eeb8bd467f486d31abd562deb243ba6" alt="Create credentials menu open on the Credentials page with the OAuth client ID option highlighted." width="1600" height="544" data-path="connectors/googleclouddata/images/oauth2-setup-create-new-client.png" />
      </div>
    </Step>

    <Step title="Option A — Create a new OAuth client">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Skip this step if you are using an existing client.</p>

        <ul>
          <li>Click <strong>+ Create Credentials</strong> and select <strong>OAuth client ID</strong>.</li>
          <li>Select <strong>Web application</strong> as the application type.</li>
          <li>Enter a <strong>Name</strong> for your OAuth client (e.g., StackOne Cloud Data Integration).</li>
          <li>Under <strong>Authorized redirect URIs</strong>, click <strong>Add URI</strong> and enter `https://api.stackone.com/connect/oauth2/googleclouddata/callback`.</li>
          <li>Click <strong>Create</strong>. A dialog will display your <strong>Client ID</strong> and <strong>Client Secret</strong> — copy and store them securely.</li>
        </ul>

        <img src="https://mintcdn.com/stackone-60/QOr5dejwqpPC0eS2/connectors/googleclouddata/images/oauth2-setup-create-oauth-form.png?fit=max&auto=format&n=QOr5dejwqpPC0eS2&q=85&s=d441556f492b51ea2b74845232634bb2" alt="Create OAuth client ID form with Application type set to Web application, a Name filled in, the StackOne callback URL under Authorized redirect URIs, and the Create button highlighted." width="2000" height="2000" data-path="connectors/googleclouddata/images/oauth2-setup-create-oauth-form.png" />
      </div>
    </Step>

    <Step title="Option B — Use an existing OAuth client">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Skip this step if you created a new client above.</p>

        <ul>
          <li>Click on your existing OAuth 2.0 client ID from the list.</li>
          <li>Under <strong>Authorized redirect URIs</strong>, click <strong>Add URI</strong>, enter `https://api.stackone.com/connect/oauth2/googleclouddata/callback`, and click <strong>Save</strong>.</li>
          <li>Under <strong>Client secrets</strong>, click <strong>+ Add secret</strong> to generate a new secret. Copy it and store it securely — it will not be shown again.</li>
          <li>Your <strong>Client ID</strong> is shown on the same page under <strong>Additional information</strong>.</li>
        </ul>

        <img src="https://mintcdn.com/stackone-60/QOr5dejwqpPC0eS2/connectors/googleclouddata/images/oauth2-setup-existing-client.png?fit=max&auto=format&n=QOr5dejwqpPC0eS2&q=85&s=e1d08686491d332b611d7df311ca934b" alt="Existing OAuth client page highlighting the Authorized redirect URIs field, the Save button, the Client ID under Additional information (redacted) and the Add secret button under Client secrets." width="3200" height="1800" data-path="connectors/googleclouddata/images/oauth2-setup-existing-client.png" />
      </div>
    </Step>
  </Steps>
</section>

<section data-guide-section data-guide-scopes="">
  <h2>Google Cloud session control and token expiry</h2>

  <p>Google Workspace administrators can enforce a <strong>Google Cloud session control</strong> window of 1 to 24 hours that applies to Google Cloud OAuth scopes. While it is enforced, the refresh token for this connection stops working once the window elapses, and the connected account keeps failing until a user re-authenticates interactively.</p>

  <ul>
    <li><strong>Symptom</strong> — the connected account periodically fails with a `refresh token expired` error even though the credentials and the OAuth client are unchanged.</li>
    <li><strong>Cause</strong> — Google Cloud session control requires interactive re-authentication for Google Cloud scopes. Google scopes outside Google Cloud (for example Sheets, Drive or Directory) are not affected.</li>
    <li><strong>Fix</strong> — in the Google Admin console, go to <strong>Security</strong> > <strong>Access and data control</strong> > <strong>Google Cloud session control</strong> and select <strong>Session never expires</strong>, or add this OAuth app to the trusted (exempted) apps list. Without one of these, periodic re-linking of the account is expected.</li>
  </ul>
</section>

## Creating the StackOne Connector Profile

To create the Connector Profile in StackOne for <strong>Google Cloud Data</strong>:

<Steps>
  <Step title="Navigate to Connector Profiles">
    Login to StackOne and navigate to [Connector Profiles](https://app.stackone.com/connector_profiles)
  </Step>

  <Step title="Create New Connector Profile">
    <ul>
      <li>Click <strong>+ Connector Profile</strong></li>
      <li>Search for and select <strong>Google Cloud Data</strong></li>
      <li>Select <strong>Type</strong> as <strong>OAuth 2.0</strong></li>

      <li>
        Fill out the fields using details retrieved from your provider:

        <ul className="connector-guide-field-list">
          <li><strong>Client ID</strong></li>
          <li><strong>Client Secret</strong></li>
          <li><strong>Scopes</strong> (Optional)</li>
        </ul>
      </li>

      <li>(Optional) Select <strong>Actions</strong> to be enabled for this Connector Profile</li>
      <li>Click <strong>Create profile</strong></li>
    </ul>
  </Step>
</Steps>

Congratulations! The new Connector Profile will now show up in your project ready to be used. You can now continue to <a href="/connect/managing-connectors/linking-accounts">Link Accounts</a> for <strong>Google Cloud Data</strong>.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.