我已经实现了 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()
and _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
}
我怎样才能正确实施?
Thanks!