gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 03:04:27 24 4
gpt4 key购买 nike

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

这是因为Firebase身份验证基于用户的电子邮件,而我已经使用Google登录。因此,它不允许使用Facebook登录。

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

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

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

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

最佳答案

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

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

关于flutter - Flutter,Dart和FirebaseAuth:如何将标志链接到用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60715528/

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