Supabase Google Sign-In Flutter: OAuth Setup Guide (v7)
Set up Supabase Google Sign-In in Flutter: google_sign_in v7, signInWithIdToken, Android SHA-1 and iOS config — with runnable code.
Getting supabase google sign in flutter working in 2026 means unlearning most tutorials you'll find: google_sign_in 7.x removed the old signIn() API entirely, replacing it with GoogleSignIn.instance.initialize() and .authenticate() — and the official supabase-flutter README still showed the stale v6 code when this guide was written. Here's the current, working setup for Android, iOS, and web: the Cloud Console config, the v7 Dart code, the signInWithIdToken exchange, and the exact errors you'll hit along the way. Last updated: October 3, 2026 What you'll learn The google_sign_in v7 API: initialize() and authenticate() Exchanging the Google ID token via signInWithIdToken Google Cloud Console setup: Android SHA-1, iOS and web client IDs Supabase dashboard config, including the "Skip nonce check" toggle Why Flutter web uses signInWithOAuth instead Fixes for "No ID Token found", "Unsupported provider", and canceled sign-ins Supabase Google Sign In Flutter: The v7 Reality Check In v6 you wrote GoogleSignIn().signIn() . In v7 that method is gone . The new API is a singleton with explicit initialization: final GoogleSignIn googleSignIn = GoogleSignIn.instance; await googleSignIn.initialize( clientId: iosClientId, // iOS OAuth client ID serverClientId: webClientId, // Web OAuth client ID (also used on Android) ); final GoogleSignInAccount account = await googleSignIn.authenticate(); final GoogleSignInAuthentication auth = await account.authentication; final String? idToken = auth.idToken; authenticate() shows the account picker and returns a GoogleSignInAccount . Its authentication gives you the ID token, which you hand to Supabase — Supabase verifies it with Google and mints its own session. (There's also attemptLightweightAuthentication() for silent…