Links an identity to an existing user using an ID token obtained from a third-party OAuth provider. This allows linking identities using native OAuth flows (Google, Apple, Facebook, etc.) similar to signInWithIdToken() but for linking rather than signing in.
linkIdentityWithIdToken().signInWithIdToken(): Google, Apple, Facebook, Kakao, and Keycloak.The OAuth provider to link the identity from.
The identity token obtained from the third-party provider.
Access token obtained from the third-party provider. Required for Google sign in.
Raw nonce value used to perform the third-party sign in. Required for Apple sign-in.
The captcha token to be used for captcha verification.
import 'package:google_sign_in/google_sign_in.dart';
import 'package:supabase_flutter/supabase_flutter.dart';
const webClientId = '<web client ID>';
const iosClientId = '<iOS client ID>';
final GoogleSignIn googleSignIn = GoogleSignIn(
clientId: iosClientId,
serverClientId: webClientId,
);
final googleUser = await googleSignIn.signIn();
final googleAuth = await googleUser!.authentication;
final accessToken = googleAuth.accessToken;
final idToken = googleAuth.idToken;
if (accessToken == null) {
throw 'No Access Token found.';
}
if (idToken == null) {
throw 'No ID Token found.';
}
final response = await supabase.auth.linkIdentityWithIdToken(
provider: OAuthProvider.google,
idToken: idToken,
accessToken: accessToken,
);
import 'package:sign_in_with_apple/sign_in_with_apple.dart';
import 'package:supabase_flutter/supabase_flutter.dart';
import 'package:crypto/crypto.dart';
final rawNonce = supabase.auth.generateRawNonce();
final hashedNonce = sha256.convert(utf8.encode(rawNonce)).toString();
final credential = await SignInWithApple.getAppleIDCredential(
scopes: [
AppleIDAuthorizationScopes.email,
AppleIDAuthorizationScopes.fullName,
],
nonce: hashedNonce,
);
final idToken = credential.identityToken;
if (idToken == null) {
throw const AuthException(
'Could not find ID Token from generated credential.',
);
}
final response = await supabase.auth.linkIdentityWithIdToken(
provider: OAuthProvider.apple,
idToken: idToken,
nonce: rawNonce,
);