Flu*_*ase 6 dart firebase firebase-authentication flutter
我已经实现了 Facebook 和 Google 登录。
但是 FireBase 文档说,如果同一用户首先注册 Facebook,然后尝试使用 Google(使用相同的电子邮件)登录,这将导致错误。
所以我按照 doc 并尝试配置帐户链接。
但我不知道该怎么做。
每次用户登录时我都应该尝试链接帐户吗?问题是我不知道用户是否已经通过其他身份验证提供商登录。
例如,原代码有:
谷歌:
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);
}
Run Code Online (Sandbox Code Playgroud)
Facebook:
void _signInWithFacebook() async {
final AuthCredential credential = FacebookAuthProvider.getCredential(
accessToken: _tokenController.text,
);
final FirebaseUser user = await _auth.signInWithCredential(credential);
}
Run Code Online (Sandbox Code Playgroud)
每次在_signInWithFacebook()and 中调用是正确的_signInWithGoogle():
user = await auth.linkWithCredential(credential);
Run Code Online (Sandbox Code Playgroud)
例如:
void _signInWithFacebook() async {
final AuthCredential credential = FacebookAuthProvider.getCredential(
accessToken: _tokenController.text,
);
final FirebaseUser user = await _auth.signInWithCredential(credential);
user = await auth.linkWithCredential(credential); //new
}
Run Code Online (Sandbox Code Playgroud)
我如何正确实施?
谢谢!
当用户输入他们的电子邮件地址进行登录时,您需要用来fetchSignInMethodsForEmail()查明该电子邮件地址是否已知。
如果用户已经与其他提供商注册,那么这是询问他们是否要合并这些帐户的好时机,然后调用帐户链接 API。
| 归档时间: |
|
| 查看次数: |
2218 次 |
| 最近记录: |