signInWithOAuth method
Future<bool>
signInWithOAuth(
- OAuthProvider provider, {
- String? redirectTo,
- String? scopes,
- LaunchMode authScreenLaunchMode = LaunchMode.platformDefault,
- 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;
}