用户注销时,在Firebase中链接多个身份验证

hzbexzde  于 2023-02-25  发布在  其他
关注(0)|答案(1)|浏览(133)

我有两个选项 * 电子邮件/密码 * & * 谷歌 * 登录/注册。
假设用户先注册了Email/Password,然后退出,再登录Google,在firebase中Email/Password条目被Google条目替换,但我希望它们是链接的,所以如果用户再次退出并尝试使用Email/Password登录,则会显示错误的密码。
Firebase解决了这个问题-FirebaseAuth.instance.currentUser?.linkWithCredential(credential),但用户需要登录。但在我的情况下,用户在访问登录/注册页面时总是注销。
因此,唯一的方法来检查电子邮件/密码条目是否存在与他们的谷歌帐户相同的电子邮件是获得他们的谷歌电子邮件,并为此需要执行以下代码-

AuthCredential credential = GoogleAuthProvider.credential(
    accessToken: googleAuth?.accessToken,
    idToken: googleAuth?.idToken,
  );

  UserCredential userCredential =
      await _auth.signInWithCredential(credential);

  User? user = userCredential.user; 

  String email = user.email;

但电子邮件/密码条目(如果存在)会在调用_auth.signInWithCredential(credential)时被替换
请帮助我解决这个问题,以便能够自动链接帐户从两个身份验证方法。
这是我当前的用户帐户链接设置(因为我不需要多个帐户)-

t3psigkw

t3psigkw1#

将提供商链接到现有帐户需要用户已经登录,没有其他选择。
要实现这一点,您应该在用户登录Google * 之后 *,但在使用该帐户登录Firebase之前,检测(通过调用fetchSignInMethodsForEmail)您是否已经有一个帐户,然后在检测到现有帐户时,提示用户登录到现有帐户,最后将新凭据链接到现有帐户。

相关问题