Люди могут войти в мое приложение анонимно:
FirebaseAuth.instance.signInAnonymously();
Оказавшись внутри, у них есть небольшой индикатор, который напоминает им, если они хотят иметь возможность сохранять свои данные на телефоны, им нужно будет войти в систему. Для аутентификации Google, которая выглядит следующим образом:
Future<void> anonymousGoogleLink() async {
try {
final user = await auth.currentUser();
final credential = await googleCredential();
await user.linkWithCredential(credential);
} catch (error) {
throw _errorToHumanReadable(error.toString());
}
}
, где googleCredential
:
Future<AuthCredential> googleCredential() async {
final googleUser = await _googleSignIn.signIn();
if (googleUser == null) throw 'User Canceled Permissions';
final googleAuth = await googleUser.authentication;
final signInMethods = await auth.fetchSignInMethodsForEmail(
email: googleUser.email,
);
if (signInMethods.isNotEmpty && !signInMethods.contains('google.com')) {
throw 'An account already exists with the same email address but different sign-in credentials. Sign in using a provider associated with this email address.';
}
return GoogleAuthProvider.getCredential(
accessToken: googleAuth.accessToken,
idToken: googleAuth.idToken,
);
}
Теперь я хотел бы сделать то же самое, но вместо этого связать текущий анонимный аккаунт. с аутентификацией по электронной почте и паролю.
РЕДАКТИРОВАТЬ:
Нашел возможное решение при написании этого. Оставляя для других, чтобы увидеть. Не стесняйтесь поправлять меня.