繁体   English   中英

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

[英]Flutter, Dart and FirebaseAuth: How do I link a sign to a user?

我正在试验 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 体验。

我正在努力弄清楚这一点。

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

如果您想允许用户使用他们喜欢的任何提供商登录,但随后在他们在多个提供商处具有相同电子邮件地址的情况下创建单独的帐户,您需要更改Firebase 中的每个电子邮件地址设置一个帐户身份验证控制台

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM