Skip to content

Fix Google OAuth invalid_client setup + improve desktop guidance#374

Open
liuxiaopai-ai wants to merge 2 commits intorowboatlabs:mainfrom
liuxiaopai-ai:docs/fix-google-oauth-invalid-client
Open

Fix Google OAuth invalid_client setup + improve desktop guidance#374
liuxiaopai-ai wants to merge 2 commits intorowboatlabs:mainfrom
liuxiaopai-ai:docs/fix-google-oauth-invalid-client

Conversation

@liuxiaopai-ai
Copy link

@liuxiaopai-ai liuxiaopai-ai commented Feb 16, 2026

Fixes #353.

What changed

  • Updated google-setup.md to recommend creating a Desktop app OAuth client (Rowboat uses a localhost loopback redirect) and added troubleshooting for Error 401: invalid_client.
  • Improved the Google Client ID prompt to clarify what value to paste (Client ID ending in .apps.googleusercontent.com) and to not paste the client secret.
  • When the OAuth flow times out for Google (e.g. user sees an error page in the browser and never reaches the localhost callback), Rowboat now emits a more actionable message pointing to the most common invalid_client causes + the setup guide.

Tests

  • pnpm -C apps/x run deps
  • pnpm -C apps/x/apps/main run build
  • pnpm -C apps/x/apps/renderer run build

@vercel
Copy link

vercel bot commented Feb 16, 2026

@liuxiaopai-ai is attempting to deploy a commit to the RowBoat Labs Team on Vercel.

A member of the Team first needs to authorize it.

@liuxiaopai-ai liuxiaopai-ai changed the title docs(google): clarify Desktop OAuth client to avoid invalid_client Fix Google OAuth invalid_client setup + improve desktop guidance Feb 16, 2026
if (reason !== 'new_flow_started') {
const provider = activeFlow.provider;
const error = (reason === 'timed_out' && provider === 'google')
? 'Timed out waiting for Google OAuth to finish. If your browser showed “Error 401: invalid_client”, double-check that you entered the OAuth Client ID (it should end with .apps.googleusercontent.com) and that it was created as a Desktop app OAuth client. Setup guide: https://github.com/rowboatlabs/rowboat/blob/main/google-setup.md'
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd rather put this guidance on the input modal where the user provides their key instead of a long-winded error-message.

<DialogTitle>Enter Google Client ID</DialogTitle>
<DialogDescription>
This app does not store the client ID. You will be prompted each session.
Paste the OAuth Client ID (it should end with .apps.googleusercontent.com). Do not paste the client secret. This app does not store it, so you will be prompted each session.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should remove this part: This app does not store it...., as that is no longer correct. The app does store it and persist it across sessions.

Select:

**Universal Windows Platform (UWP)**
**Desktop app**
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Did you actually test this in GCP? Desktop app client did not work in our testing, whereas UWP did. Thats why we are recommending this.

- Click **Create**

![Create OAuth Client ID (UWP)](https://raw.githubusercontent.com/rowboatlabs/rowboat/main/apps/docs/docs/img/google-setup/05-create-oauth-client-uwp.png)
> Note: Rowboat Desktop uses a local redirect URI during OAuth:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure why the end-user would care about this information.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

IN windows app, while trying to connect to Gmail OAuth fails

2 participants