This guide walks you through setting up Google Cloud to enable OAuth for the Chrome extension. The extension only needs identity-level OAuth (openid email) — all Drive and Docs operations run server-side inside your Apps Script web app, so you do not need to enable Drive, Docs, or Apps Script APIs here.
- A Google account
- Access to Google Cloud Console
- The Chrome extension loaded unpacked (you need the extension ID — see step 4)
- Go to Google Cloud Console
- Click the project selector at the top → New Project
- Give it a name (e.g.,
meet-gemini-notebooklm) and click Create - Make sure the new project is selected before continuing
- Go to APIs & Services → Library
- Search for Google Identity Toolkit API (also listed as "Identity Services")
- Click Enable
This is the only API required on the Cloud side. Drive/Docs access is handled entirely by Apps Script using its own runtime permissions.
- Go to APIs & Services → OAuth consent screen
- Select External user type, click Create
- Fill in the required fields:
- App name: MeetSync
- User support email: your email
- Developer contact email: your email
- Click Save and Continue
- On the Scopes page, click Save and Continue without adding any scopes — the extension only requests
openidandemail, which are defaults - Add your Google account as a test user, then click Save and Continue
Before creating OAuth credentials, you need the Chrome extension's ID:
- Open
chrome://extensionsin Chrome - Enable Developer mode (toggle in the top-right)
- Click Load unpacked and select the
dist/folder (build first withnpm run build) - Copy the Extension ID shown under the extension name (looks like
abcdefghijklmnopqrstuvwxyzabcdef)
The ID is derived from your OAuth client ID, so it will remain stable once you link the two below. If you haven't built yet, you can get a preliminary ID and update the OAuth client later.
- Go to APIs & Services → Credentials
- Click Create Credentials → OAuth client ID
- Application type: Chrome Extension
- Name:
MeetSync - Under Item ID, paste the extension ID from step 4
- Click Create
- Copy the Client ID (format:
XXXXXXXXXXXX-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com)
Edit public/manifest.json and set the oauth2.client_id field:
"oauth2": {
"client_id": "YOUR_CLIENT_ID.apps.googleusercontent.com",
"scopes": ["openid", "email"]
}Then rebuild:
npm run buildReload the extension in chrome://extensions (click the refresh icon).
The extension communicates with your Apps Script backend via a web app URL. To deploy it:
- Open the Apps Script project bound to your master Google Doc (Extensions → Apps Script)
- Click Deploy → New deployment
- Click the gear icon next to Type and select Web app
- Configure the deployment:
- Description: e.g.,
Meet Gemini API v1 - Execute as: Me (the script runs with your Drive/Docs permissions)
- Who has access: Anyone with a Google account (the extension validates the caller's identity via token)
- Description: e.g.,
- Click Deploy and authorize when prompted
- Copy the Web App URL (format:
https://script.google.com/macros/s/AKfycb.../exec)
The Apps Script side validates incoming requests by calling Google's tokeninfo endpoint with the OAuth token. Only requests from authenticated Google accounts are processed.
- Click the extension icon in Chrome — the Setup wizard opens on first run
- Paste your Web App URL into the deployment URL field
- Click Save — the extension stores the URL in
chrome.storage.sync
You're all set. Run a sync from the dashboard to verify everything is connected.
- Make sure the extension ID in your OAuth client (step 5) matches the ID shown in
chrome://extensions - After updating
public/manifest.json, rebuild and reload the extension
- Check that the Apps Script is deployed with Execute as: Me and Anyone with a Google account access
- Make sure you redeployed after any script changes (each deploy gets a new URL)
- Run
npm run buildbefore loading unpacked - Check
chrome://extensionsfor any manifest errors - Verify
public/manifest.jsonis valid JSON with a non-emptyclient_id