gpt4 book ai didi

firebase - 将多个身份验证提供程序链接到一个帐户

转载 作者:IT王子 更新时间:2023-10-29 06:57:23 25 4
gpt4 key购买 nike

我已经实现了 Facebook 和 Google 登录。

但是 FireBase 文档说,如果同一用户首先使用 Facebook 注册,然后尝试使用 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

}

如何正确实现?

谢谢!

最佳答案

当用户输入他们的电子邮件地址登录时,您需要使用 fetchProvidersForEmail()查明该电子邮件地址是否已知。

如果用户已经注册了另一个供应商,这是询问他们是否要合并这些帐户的好时机,然后调用帐户链接 API。

关于firebase - 将多个身份验证提供程序链接到一个帐户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55716180/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com