Skip to content

Google OAuth verification (exit test mode) #8

Description

@Phoenix-

Get the Google Cloud project out of "Testing" mode so Meridian works for non-test users without the 7-day token tax.

Why it matters

  • Refresh tokens stop expiring after 7 days. This is the main pain. Note: the 7-day expiry is a property of Testing publishing status specifically — publishing to Production removes it even without verification (source). The re-auth UI exists as a workaround but it's a tax on every user.
  • "Unverified app" warning goes away (only with full verification).
  • Required before any non-test-user can use Meridian at scale.

Scope classification — CONFIRMED sensitive, not restricted

Google's canonical restricted-scopes list (support.google.com/cloud/answer/13464325) contains only Gmail, Drive, Fit, Chat, Data Portability, Photos Ambient, Health.

Calendar and Tasks are not on it — calendar, calendar.readonly, and all tasks scopes are sensitive, never restricted. Read-vs-write is a separate axis; full read-write calendar is still only sensitive.

➡️ CASA / third-party security assessment does NOT apply to us, ever. Verification is paperwork + a demo video, at $0.

Options (all $0, except a possible ~$10/yr domain for verification)

Path Verification CASA User limit 7-day expiry Notes
Stay in Testing (current) no no 100 test users present status quo
Production, unverified no no 100 / project lifetime, no reset (src) gone "unverified app" screen on first login
Production, verified yes no none gone clean public release
BYO client_id (user makes own Cloud project) not needed no none gone needs a setup wizard; most "in-spirit" for OSS

Process for full verification (clean public-release path)

  1. OAuth consent screen filled completely: app name, logo, support + developer emails.
  2. App homepage describing the app (github.io works).
  3. Privacy policy hosted page — must include the Limited Use disclosure referencing the Google API Services User Data Policy. Our offline / no-backend design makes this short and honest (data stays in %APPDATA%\Meridian, nothing sent anywhere).
  4. Domain verification in Search Console under the project-owning account. ⚠️ Only real snag: *.github.io is GitHub's domain — we generally can't verify ownership. Likely need a cheap custom domain (~$10/yr) CNAME'd to Pages just for this.
  5. Demo video (YouTube): show the consent screen with client ID/URL visible + how each scope is used in-app.
  6. Scope justification text for each scope.
  7. Submit; expect weeks of back-and-forth — track here.

⚠️ Code currently requests readonly, not read-write

Meridian/Auth/GoogleOAuthClient.cs currently requests calendar.readonly + tasks.readonly + email + profile. If we want create/edit, widen scopes before Production/verification — changing scopes after users consent forces everyone to re-authorize. Decide read-vs-write first.

Recommendation

  • Free offline pet tool → Production-unverified kills the 7-day pain at $0, capped at 100 lifetime users.
  • Genuine public release → full verification is free (only blocker is the github.io domain snag). Makes the v1.0 milestone realistic.
  • BYO client_id sidesteps Google gatekeeping entirely at the cost of a one-time user setup wizard.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    distributionShipping: installer, signing, store listings

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions