【问题标题】:Flutter, Dart and FirebaseAuth: How do I link a sign to a user?Flutter、Dart 和 FirebaseAuth:如何将标志链接到用户?
【发布时间】:2020-06-28 03:06:41
【问题描述】:

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

这是因为 firebase auth 将一切都基于用户的电子邮件,而我已经使用 Google 登录。因此,它不允许使用 Facebook 登录。

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

所以我处于这种情况。如果用户重新启动应用并选择 Facebook 而不是 Google,如果我没有 FirebaseUser 或电子邮件地址,我该如何链接帐户?

到目前为止,我在网上看到的唯一一件事是人们说您必须先让用户使用他们的 Google 帐户登录,但是登录 Google 只是为了然后登录 Facebook 是一种非常糟糕的 UI 体验。

我正在努力解决这个问题。

【问题讨论】:

    标签: flutter dart firebase-authentication


    【解决方案1】:

    您首先需要使用用户现有的 Google 帐户登录 Firebase 身份验证。然后您使用 Facebook 登录,并创建一个 AuthCredentialFacebookAuthProvider.getCredential()。然后你用上一次调用的结果调用linkWithCredential。这是关联两个帐户的唯一方法。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-28
      • 1970-01-01
      • 2019-10-24
      • 2021-03-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多