> ## 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.

# Firebase OAuth 2.0 connector profile – StackOne setup guide

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

<Warning>Owner or Editor access to the Firebase project is 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;firebase_list_users&#x22;,&#x22;label&#x22;:&#x22;List Users&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/identitytoolkit&#x22;]},{&#x22;id&#x22;:&#x22;firebase_query_users&#x22;,&#x22;label&#x22;:&#x22;Query Users&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/identitytoolkit&#x22;]},{&#x22;id&#x22;:&#x22;firebase_lookup_user&#x22;,&#x22;label&#x22;:&#x22;Lookup User&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/identitytoolkit&#x22;]},{&#x22;id&#x22;:&#x22;firebase_create_user&#x22;,&#x22;label&#x22;:&#x22;Create User&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/identitytoolkit&#x22;]},{&#x22;id&#x22;:&#x22;firebase_update_user&#x22;,&#x22;label&#x22;:&#x22;Update User&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/identitytoolkit&#x22;]},{&#x22;id&#x22;:&#x22;firebase_delete_user&#x22;,&#x22;label&#x22;:&#x22;Delete User&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/identitytoolkit&#x22;]},{&#x22;id&#x22;:&#x22;firebase_batch_delete_users&#x22;,&#x22;label&#x22;:&#x22;Batch Delete Users&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/identitytoolkit&#x22;]},{&#x22;id&#x22;:&#x22;firebase_list_documents&#x22;,&#x22;label&#x22;:&#x22;List Documents&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/datastore&#x22;]},{&#x22;id&#x22;:&#x22;firebase_get_document&#x22;,&#x22;label&#x22;:&#x22;Get Document&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/datastore&#x22;]},{&#x22;id&#x22;:&#x22;firebase_create_document&#x22;,&#x22;label&#x22;:&#x22;Create Document&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/datastore&#x22;]},{&#x22;id&#x22;:&#x22;firebase_patch_document&#x22;,&#x22;label&#x22;:&#x22;Update Document&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/datastore&#x22;]},{&#x22;id&#x22;:&#x22;firebase_delete_document&#x22;,&#x22;label&#x22;:&#x22;Delete Document&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/datastore&#x22;]},{&#x22;id&#x22;:&#x22;firebase_run_query&#x22;,&#x22;label&#x22;:&#x22;Run Query&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/datastore&#x22;]},{&#x22;id&#x22;:&#x22;firebase_list_available_projects&#x22;,&#x22;label&#x22;:&#x22;List Available Projects&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/firebase.readonly&#x22;]},{&#x22;id&#x22;:&#x22;firebase_list_projects&#x22;,&#x22;label&#x22;:&#x22;List Projects&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/firebase.readonly&#x22;]},{&#x22;id&#x22;:&#x22;firebase_get_project&#x22;,&#x22;label&#x22;:&#x22;Get Project&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/firebase.readonly&#x22;]},{&#x22;id&#x22;:&#x22;firebase_patch_project&#x22;,&#x22;label&#x22;:&#x22;Update Project&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/firebase&#x22;]},{&#x22;id&#x22;:&#x22;firebase_get_analytics_details&#x22;,&#x22;label&#x22;:&#x22;Get Analytics Details&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/firebase.readonly&#x22;]},{&#x22;id&#x22;:&#x22;firebase_search_apps&#x22;,&#x22;label&#x22;:&#x22;Search Apps&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/firebase.readonly&#x22;]},{&#x22;id&#x22;:&#x22;firebase_list_android_apps&#x22;,&#x22;label&#x22;:&#x22;List Android Apps&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/firebase.readonly&#x22;]},{&#x22;id&#x22;:&#x22;firebase_get_android_app&#x22;,&#x22;label&#x22;:&#x22;Get Android App&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/firebase.readonly&#x22;]},{&#x22;id&#x22;:&#x22;firebase_create_android_app&#x22;,&#x22;label&#x22;:&#x22;Create Android App&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/firebase&#x22;]},{&#x22;id&#x22;:&#x22;firebase_patch_android_app&#x22;,&#x22;label&#x22;:&#x22;Update Android App&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/firebase&#x22;]},{&#x22;id&#x22;:&#x22;firebase_remove_android_app&#x22;,&#x22;label&#x22;:&#x22;Remove Android App&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/firebase&#x22;]},{&#x22;id&#x22;:&#x22;firebase_get_android_app_config&#x22;,&#x22;label&#x22;:&#x22;Get Android App Config&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/firebase.readonly&#x22;]},{&#x22;id&#x22;:&#x22;firebase_list_web_apps&#x22;,&#x22;label&#x22;:&#x22;List Web Apps&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/firebase.readonly&#x22;]},{&#x22;id&#x22;:&#x22;firebase_get_web_app&#x22;,&#x22;label&#x22;:&#x22;Get Web App&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/firebase.readonly&#x22;]},{&#x22;id&#x22;:&#x22;firebase_create_web_app&#x22;,&#x22;label&#x22;:&#x22;Create Web App&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/firebase&#x22;]},{&#x22;id&#x22;:&#x22;firebase_patch_web_app&#x22;,&#x22;label&#x22;:&#x22;Update Web App&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/firebase&#x22;]},{&#x22;id&#x22;:&#x22;firebase_remove_web_app&#x22;,&#x22;label&#x22;:&#x22;Remove Web App&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/firebase&#x22;]},{&#x22;id&#x22;:&#x22;firebase_get_web_app_config&#x22;,&#x22;label&#x22;:&#x22;Get Web App Config&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/firebase.readonly&#x22;]},{&#x22;id&#x22;:&#x22;firebase_undelete_android_app&#x22;,&#x22;label&#x22;:&#x22;Undelete Android App&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/firebase&#x22;]},{&#x22;id&#x22;:&#x22;firebase_undelete_web_app&#x22;,&#x22;label&#x22;:&#x22;Undelete Web App&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/firebase&#x22;]},{&#x22;id&#x22;:&#x22;firebase_list_sha_certificates&#x22;,&#x22;label&#x22;:&#x22;List SHA Certificates&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/firebase.readonly&#x22;]},{&#x22;id&#x22;:&#x22;firebase_create_sha_certificate&#x22;,&#x22;label&#x22;:&#x22;Create SHA Certificate&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/firebase&#x22;]},{&#x22;id&#x22;:&#x22;firebase_send_message&#x22;,&#x22;label&#x22;:&#x22;Send Message&#x22;,&#x22;scopes&#x22;:[&#x22;https://www.googleapis.com/auth/firebase.messaging&#x22;]}]" style={{ borderRadius: '8px', padding: '16px', marginBottom: '24px' }}>
    <div className="guides-scope-selector__title" style={{ fontSize: '16px', fontWeight: '600', marginBottom: '12px' }}>Select Actions to adjust the guide</div>
    <div className="guides-scope-selector__muted" style={{ fontSize: '13px', marginBottom: '12px' }}>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 style={{ display: 'flex', gap: '8px', marginBottom: '12px', flexWrap: 'wrap' }}>
      <input type="text" placeholder="Search actions..." className="guides-scope-selector__input" data-guide-action-search style={{ padding: '8px 12px', borderRadius: '6px', fontSize: '13px', flex: 1, minWidth: '160px' }} />

      <button type="button" className="guides-scope-selector__quick-btn" data-guide-select-all style={{ padding: '6px 10px', borderRadius: '6px', fontSize: '12px', cursor: 'pointer' }}>Select all</button>
      <button type="button" className="guides-scope-selector__quick-btn" data-guide-clear style={{ padding: '6px 10px', borderRadius: '6px', fontSize: '12px', cursor: 'pointer' }}>Clear</button>
    </div>

    <div className="guides-scope-selector__list" style={{ maxHeight: '240px', overflowY: 'auto', borderRadius: '6px', marginBottom: '12px' }}>
      <div className="guides-scope-selector__list-header" style={{ display: 'flex', alignItems: 'center', gap: '10px', padding: '8px 12px', fontSize: '12px', fontWeight: '600', position: 'sticky', top: 0, zIndex: 1 }}>
        <div style={{ width: '16px', flexShrink: 0 }} />

        <div style={{ flex: 1, textAlign: 'left' }}>Action</div>
        <div style={{ minWidth: '120px', marginLeft: 'auto', textAlign: 'right' }}>Scope(s)</div>
      </div>

      <div className="guides-scope-selector__muted" data-guide-loading style={{ padding: '16px', textAlign: 'center', fontSize: '13px' }}>Loading actions...</div>
      <div className="guides-scope-selector__muted" data-guide-no-results hidden style={{ padding: '16px', textAlign: 'center', fontSize: '13px' }}>No actions match your search.</div>
    </div>

    <div className="guides-scope-selector__url-section" style={{ marginTop: '12px', paddingTop: '12px' }}>
      <div className="guides-scope-selector__muted" style={{ fontSize: '12px', fontWeight: '500', marginBottom: '6px' }}>Dynamic Guide URL</div>

      <div style={{ display: 'flex', alignItems: 'center', gap: '8px', flexWrap: 'wrap' }}>
        <input type="text" readOnly className="guides-scope-selector__input" data-guide-url style={{ flex: 1, minWidth: '200px', padding: '8px 10px', borderRadius: '6px', fontSize: '12px', fontFamily: 'monospace' }} />

        <button type="button" className="guides-scope-selector__copy-btn" data-guide-copy-url style={{ width: '120px', padding: '8px 14px', borderRadius: '6px', fontSize: '13px', fontWeight: '500', cursor: 'pointer', whiteSpace: 'nowrap', marginLeft: 'auto' }}>Copy URL</button>
      </div>

      <div style={{ marginTop: '12px' }}>
        <div className="guides-scope-selector__muted" style={{ fontSize: '12px', fontWeight: '500', marginBottom: '6px' }}>Scopes Selected</div>

        <div style={{ display: 'flex', alignItems: 'stretch', gap: '8px', flexWrap: 'wrap' }}>
          <pre className="guides-scope-selector__input" role="textbox" aria-readonly="true" tabIndex={0} data-guide-scopes-output style={{ flex: 1, minWidth: '200px', minHeight: '88px', maxHeight: '120px', overflowY: 'auto', margin: 0, padding: '8px 10px', borderRadius: '6px', fontSize: '12px', fontFamily: 'monospace', whiteSpace: 'pre-wrap' }} />

          <div className="guides-scope-selector__muted" style={{ display: 'flex', flexDirection: 'column', gap: '8px', fontSize: '12px', fontWeight: '500', flexShrink: 0, alignItems: 'flex-start' }}>
            <div style={{ whiteSpace: 'nowrap' }}>Separator</div>

            <select className="guides-scope-selector__input" data-guide-scope-delimiter style={{ width: '100%', padding: '6px 10px', borderRadius: '6px', fontSize: '12px' }}>
              <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 style={{ width: '120px', padding: '8px 14px', borderRadius: '6px', fontSize: '13px', fontWeight: '500', cursor: 'pointer', whiteSpace: 'nowrap' }}>Copy scopes</button>
          </div>
        </div>
      </div>
    </div>
  </div>
</Panel>

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

  <p>To use the Firebase REST APIs with OAuth 2.0, you need a Google Cloud project that has Firebase enabled.</p>

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

    <Step title="Create or select a project">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>On the Firebase Console home page you can either pick an existing project from the <strong>Projects and workspaces</strong> list on the right (then skip to the next section), or create a new one by following the screen-by-screen wizard steps below.</p>

        <ul>
          <li><strong>Step 1 — Open the wizard:</strong> on the Firebase Console home page (`console.firebase.google.com`), click the <strong>Create a new Firebase project</strong> card under <strong>Get started</strong>.</li>
          <li><strong>Step 2 — Enter a project name:</strong> click the <strong>Project name</strong> field and type a name (for example, `StackOne Integration`).</li>
          <li><strong>Step 3 — Note the auto-generated project ID:</strong> Firebase auto-generates a globally-unique project ID directly below the name (for example, `stackone-integration-e8265`). Copy this ID — you will need it for every project-scoped API call. Optionally click the pencil icon to customise it before the project is created.</li>
          <li><strong>Step 4 — (Alternative) Use an existing Google Cloud project:</strong> if you already have a Google Cloud project, click <strong>Add Firebase to Google Cloud project</strong> at the bottom-left and pick that project instead of typing a new name.</li>
          <li><strong>Step 5 — Continue:</strong> click <strong>Continue</strong> to advance to the next screen.</li>
          <li><strong>Step 6 — AI assistance:</strong> the next screen is *AI assistance for your Firebase project*. Leave the <strong>Enable Gemini in Firebase</strong> toggle ON (the default) and click <strong>Continue</strong>.</li>
          <li><strong>Step 7 — Google Analytics:</strong> the next screen is *Google Analytics for your Firebase project*. Leave the <strong>Enable Google Analytics for this project</strong> toggle ON (the default — required for the `get_analytics_details` action) and click <strong>Continue</strong>.</li>
          <li><strong>Step 8 — Configure Google Analytics:</strong> the next screen is *Configure Google Analytics*. Pick a region from the <strong>Analytics location</strong> dropdown (default `United States` works for most users), leave the <strong>Use the default settings for sharing Google Analytics data</strong> checkbox ticked, then tick the <strong>I accept the Google Analytics Terms</strong> checkbox — this is required to enable the <strong>Create project</strong> button. Click <strong>Create project</strong>.</li>
          <li><strong>Step 9 — Wait for provisioning and open the project:</strong> Firebase shows a *Preparing your project, please wait* spinner followed by *Finishing up…* (\~30–60s). When you see the green tick and <strong>Your Firebase project is ready</strong> message, click <strong>Continue</strong> to land on the <strong>Project Overview</strong> page.</li>
        </ul>
      </div>
    </Step>

    <Step title="Note your Project ID">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>In the left sidebar, hover over <strong>Settings</strong> (gear icon) to expand the submenu, then click <strong>General</strong>. This opens the <strong>Project settings</strong> page on the <strong>General</strong> tab — copy your <strong>Project ID</strong> from the <strong>Your project</strong> section. You will need it when calling project-scoped API endpoints.</p>
      </div>
    </Step>
  </Steps>
</section>

<section data-guide-section data-guide-scopes="">
  <h2>Enable the Firebase APIs</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.</p>

  <ul>
    <li>Firebase Management API</li>
    <li>Identity Toolkit API</li>
    <li>Google Cloud Firestore API</li>
    <li>Firebase Cloud Messaging 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 Firebase Integration).</li>
          <li><strong>User support email</strong>: Select an email for user inquiries.</li>
          <li>Click <strong>Next</strong> to continue.</li>
        </ul>
      </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 (requires app verification for production use).</li>
          <li>Click <strong>Next</strong> to continue.</li>
        </ul>
      </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>
  </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>

  <Steps>
    <Step title="Add scopes">
      <div data-guide-step data-guide-scopes="https://www.googleapis.com/auth/firebase,https://www.googleapis.com/auth/firebase.readonly,https://www.googleapis.com/auth/identitytoolkit,https://www.googleapis.com/auth/datastore,https://www.googleapis.com/auth/firebase.messaging,https://www.googleapis.com/auth/userinfo.email" data-guide-display-scopes-list="https://www.googleapis.com/auth/firebase,https://www.googleapis.com/auth/firebase.readonly,https://www.googleapis.com/auth/identitytoolkit,https://www.googleapis.com/auth/datastore,https://www.googleapis.com/auth/firebase.messaging,https://www.googleapis.com/auth/userinfo.email">
        <div className="connector-guide-actions-badge" data-guide-actions-badge data-guide-actions-badge-scopes="https://www.googleapis.com/auth/firebase,https://www.googleapis.com/auth/firebase.readonly,https://www.googleapis.com/auth/identitytoolkit,https://www.googleapis.com/auth/datastore,https://www.googleapis.com/auth/firebase.messaging,https://www.googleapis.com/auth/userinfo.email" style={{ display: 'block', width: 'fit-content', maxWidth: '100%', padding: '2px 8px', borderRadius: '8px', fontSize: '12px', marginBottom: '8px', marginTop: '-10px', whiteSpace: 'nowrap', overflowX: 'auto', overflowY: 'hidden', msOverflowStyle: 'none', scrollbarWidth: 'none' }}>
          <span>Enables actions: </span><span data-guide-actions-badge-labels>Batch Delete Users, Create Android App, Create Document, Create SHA Certificate, Create User, Create Web App, Delete Document, Delete User, Get Analytics Details, Get Android App, Get Android App Config, Get Document, Get Project, Get Web App, Get Web App Config, List Android Apps, List Available Projects, List Documents, List Projects, List SHA Certificates, List Users, List Web Apps, Lookup User, Query Users, Remove Android App, Remove Web App, Run Query, Search Apps, Send Message, Undelete Android App, Undelete Web App, Update Android App, Update Document, Update Project, Update User, Update Web App</span>
        </div>

        <p>Add the required Firebase scopes for your integration.</p>

        <div style={{ marginTop: '8px' }} data-guide-display-scopes>
          <div className="connector-guide-scopes-container">
            <ul className="not-prose" style={{ listStyleType: "'- '", paddingLeft: '1em', margin: 0 }}>
              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="https://www.googleapis.com/auth/firebase">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy https://www.googleapis.com/auth/firebase" title="Copy scope" data-copy="https://www.googleapis.com/auth/firebase">
                  <span className="connector-guide-scope-copy__label">[https://www.googleapis.com/auth/firebase](https://www.googleapis.com/auth/firebase)</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="https://www.googleapis.com/auth/firebase.readonly">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy https://www.googleapis.com/auth/firebase.readonly" title="Copy scope" data-copy="https://www.googleapis.com/auth/firebase.readonly">
                  <span className="connector-guide-scope-copy__label">[https://www.googleapis.com/auth/firebase.readonly](https://www.googleapis.com/auth/firebase.readonly)</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="https://www.googleapis.com/auth/identitytoolkit">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy https://www.googleapis.com/auth/identitytoolkit" title="Copy scope" data-copy="https://www.googleapis.com/auth/identitytoolkit">
                  <span className="connector-guide-scope-copy__label">[https://www.googleapis.com/auth/identitytoolkit](https://www.googleapis.com/auth/identitytoolkit)</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="https://www.googleapis.com/auth/datastore">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy https://www.googleapis.com/auth/datastore" title="Copy scope" data-copy="https://www.googleapis.com/auth/datastore">
                  <span className="connector-guide-scope-copy__label">[https://www.googleapis.com/auth/datastore](https://www.googleapis.com/auth/datastore)</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="https://www.googleapis.com/auth/firebase.messaging">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy https://www.googleapis.com/auth/firebase.messaging" title="Copy scope" data-copy="https://www.googleapis.com/auth/firebase.messaging">
                  <span className="connector-guide-scope-copy__label">[https://www.googleapis.com/auth/firebase.messaging](https://www.googleapis.com/auth/firebase.messaging)</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="https://www.googleapis.com/auth/userinfo.email">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy https://www.googleapis.com/auth/userinfo.email" title="Copy scope" data-copy="https://www.googleapis.com/auth/userinfo.email">
                  <span className="connector-guide-scope-copy__label">[https://www.googleapis.com/auth/userinfo.email](https://www.googleapis.com/auth/userinfo.email)</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>
      </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 the Firebase APIs. 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>

  <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>.</p>
      </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 Firebase Integration).</li>
          <li>Under <strong>Authorized redirect URIs</strong>, click <strong>Add URI</strong> and enter `https://api.stackone.com/connect/oauth2/firebase/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>
      </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/firebase/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>
      </div>
    </Step>
  </Steps>
</section>

## Creating the StackOne Connector Profile

To create the Connector Profile in StackOne for <strong>Firebase</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>Firebase</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 style={{ marginLeft: '20px' }}>
          <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="/guides/accounts-section#linking-accounts">Link Accounts</a> for <strong>Firebase</strong>.
