signInWithOAuth method

Future<bool> signInWithOAuth(
  1. OAuthProvider provider, {
  2. String? redirectTo,
  3. String? scopes,
  4. LaunchMode authScreenLaunchMode = LaunchMode.platformDefault,
  5. Map<String, String>? queryParams,
})

Signs the user in using a third party providers.

await supabase.auth.signInWithOAuth(
  OAuthProvider.google,
  // Use deep link to bring the user back to the app
  redirectTo: 'my-scheme://my-host/callback-path',
);

The return value of this method is not the auth result, and whether the OAuth sign-in has succeded or not should be observed by setting a listener on auth.onAuthStateChanged.

See also:

Implementation

Future<bool> signInWithOAuth(
  OAuthProvider provider, {
  String? redirectTo,
  String? scopes,
  LaunchMode authScreenLaunchMode = LaunchMode.platformDefault,
  Map<String, String>? queryParams,
}) async {
  final res = await getOAuthSignInUrl(
    provider: provider,
    redirectTo: redirectTo,
    scopes: scopes,
    queryParams: queryParams,
  );
  final uri = Uri.parse(res.url);

  LaunchMode launchMode = authScreenLaunchMode;

  // `Platform.isAndroid` throws on web, so adding a guard for web here.
  final isAndroid = !kIsWeb && Platform.isAndroid;

  // Google login has to be performed on external browser window on Android
  if (provider == OAuthProvider.google && isAndroid) {
    launchMode = LaunchMode.externalApplication;
  }

  final result = await launchUrl(
    uri,
    mode: launchMode,
    webOnlyWindowName: '_self',
  );
  return result;
}