代码之家  ›  专栏  ›  技术社区  ›  drekka

flatter、Dart和FirebaseAuth:如何将标志链接到用户?

  •  0
  • drekka  · 技术社区  · 6 年前

    我正在试验颤振、飞镖和FirebaseAuth。我已经能够用谷歌登录成功登录,但当我尝试用Facebook登录时,我被告知“ 已存在具有相同电子邮件地址但不同登录凭据的帐户。使用与此电子邮件地址关联的提供商登录。

    这是因为firebase auth基于用户的电子邮件,我已经使用谷歌登录了。所以它不允许登录Facebook。

    在我几年前做的一些代码中,我只是获得了用户并使用了 .lineWithCredential(facebookAuthCred) 完成与Firebase中已建立的Google帐户的链接。但在Dart实现中,这不起作用,因为 FirebaseAuth.instance.currentUser() 正在返回一个 null .关于错误的文档从 .signInWithCredential(facebookAuthCred) 告诉我怎么做 .fetchSignInMethodForEmail(...) 除了没有登录,我没有电子邮件地址可以传递给它。

    所以我处于这种情况。如果用户重新启动应用程序并选择Facebook而不是谷歌,那么在我没有账户的情况下,我如何链接账户 FirebaseUser 也没有电子邮件地址?

    到目前为止,我在网上看到的唯一一件事是,人们说你必须先让用户使用他们的谷歌账户登录,但登录谷歌然后登录Facebook是一种非常糟糕的用户界面体验。

    我很难弄明白。

    0 回复  |  直到 6 年前
        1
  •  1
  •   Frank van Puffelen    6 年前

    您首先需要使用用户现有的Google帐户登录Firebase身份验证。然后你用Facebook登录他们,创建一个 AuthCredential 通过 FacebookAuthProvider.getCredential() .然后你打电话 linkWithCredential 根据上次通话的结果。这是连接这两个帐户的唯一方法。

    如果您想允许用户使用他们喜欢的任何提供商登录,但在您的场景中创建单独的帐户,在多个提供商中他们拥有相同的电子邮件地址,那么您需要更改 每个电子邮件地址一个帐户 设置在 Firebase Authentication console