Я реализовал вход в Facebook и Google.
Но в документе FireBase сказано, что это вызовет ошибку, если тот же пользователь сначала зарегистрируется в Facebook, а затем попытается войти в систему через Google (с тем же адресом электронной почты).
Поэтому я следую за документом и пытаюсь настроить привязку учетной записи .
Но я не знаю, как это сделать.
Стоит ли пытаться связать учетную запись каждый раз, когда пользователь входит в систему? Проблема в том, что я не знаю, выполнил ли пользователь вход с другим поставщиком аутентификации.
Например, оригинальный код имеет:
Google:
void _signInWithGoogle() async {
final GoogleSignInAccount googleUser = await _googleSignIn.signIn();
final GoogleSignInAuthentication googleAuth =
await googleUser.authentication;
final AuthCredential credential = GoogleAuthProvider.getCredential(
accessToken: googleAuth.accessToken,
idToken: googleAuth.idToken,
);
final FirebaseUser user = await _auth.signInWithCredential(credential);
}
Facebook:
void _signInWithFacebook() async {
final AuthCredential credential = FacebookAuthProvider.getCredential(
accessToken: _tokenController.text,
);
final FirebaseUser user = await _auth.signInWithCredential(credential);
}
Правильно ли звонить каждый раз в _signInWithFacebook()
и _signInWithGoogle()
:
user = await auth.linkWithCredential(credential);
Например:
void _signInWithFacebook() async {
final AuthCredential credential = FacebookAuthProvider.getCredential(
accessToken: _tokenController.text,
);
final FirebaseUser user = await _auth.signInWithCredential(credential);
user = await auth.linkWithCredential(credential); //new
}
Как я могу правильно реализовать?
Спасибо!