diff --git a/docs/auth/errors.md b/docs/auth/errors.md
index 0f4154ada219..6efb56c41e8a 100644
--- a/docs/auth/errors.md
+++ b/docs/auth/errors.md
@@ -1,5 +1,5 @@
-Project: /docs/_project.yaml
-Book: /docs/_book.yaml
+Project: /docs/\_project.yaml
+Book: /docs/\_book.yaml
@@ -51,49 +51,40 @@ try {
} on FirebaseAuthException catch (e) {
if (e.code == 'account-exists-with-different-credential') {
// The account already exists with a different credential
- String email = e.email;
- AuthCredential pendingCredential = e.credential;
+ String email = e.email!;
+ AuthCredential pendingCredential = e.credential!;
- // Fetch a list of what sign-in methods exist for the conflicting user
- List userSignInMethods = await auth.fetchSignInMethodsForEmail(email);
+ // Note: fetchSignInMethodsForEmail() is deprecated.
+ // Instead, attempt sign-in directly with known providers
+ // and handle the linking flow accordingly.
- // If the user has several sign-in methods,
- // the first method in the list will be the "recommended" method to use.
- if (userSignInMethods.first == 'password') {
- // Prompt the user to enter their password
- String password = '...';
-
- // Sign the user in to their account with the password
+ // Try signing in with email/password if applicable
+ try {
UserCredential userCredential = await auth.signInWithEmailAndPassword(
email: email,
- password: password,
+ password: promptUserForPassword(), // prompt user for password
);
-
// Link the pending credential with the existing account
- await userCredential.user.linkWithCredential(pendingCredential);
-
+ await userCredential.user!.linkWithCredential(pendingCredential);
// Success! Go back to your application flow
return goToApplication();
+ } on FirebaseAuthException catch (_) {
+ // Email/password sign-in failed, try another provider
}
- // Since other providers are now external, you must now sign the user in with another
- // auth provider, such as Facebook.
- if (userSignInMethods.first == 'facebook.com') {
- // Create a new Facebook credential
- String accessToken = await triggerFacebookAuthentication();
- var facebookAuthCredential = FacebookAuthProvider.credential(accessToken);
-
- // Sign the user in with the credential
- UserCredential userCredential = await auth.signInWithCredential(facebookAuthCredential);
+ // Try signing in with Facebook if applicable
+ String accessToken = await triggerFacebookAuthentication();
+ var facebookAuthCredential =
+ FacebookAuthProvider.credential(accessToken);
- // Link the pending credential with the existing account
- await userCredential.user.linkWithCredential(pendingCredential);
+ UserCredential userCredential =
+ await auth.signInWithCredential(facebookAuthCredential);
- // Success! Go back to your application flow
- return goToApplication();
- }
+ // Link the pending credential with the existing account
+ await userCredential.user!.linkWithCredential(pendingCredential);
- // Handle other OAuth providers...
+ // Success! Go back to your application flow
+ return goToApplication();
}
}
```