将多个身份验证提供商链接到一个帐户

2024-05-09

我已经实现了 Facebook 和 Google 登录。

但 FireBase 文档称,如果同一用户首先使用 Facebook 注册,然后尝试使用 Google 登录(使用相同的电子邮件),这将导致错误。

所以我按照文档并尝试配置帐户关联.

但我不知道该怎么办。

我应该在每次用户登录时尝试链接帐户吗?问题是我不知道用户是否已经使用另一个身份验证提供商登录。

例如,原始代码有:

Google:

  void _signInWithGoogle() async {
    final GoogleSignInAccount googleUser = await _googleSignIn.signIn();
    final GoogleSignInAuthentication googleAuth =
        await googleUser.authentication;
    final AuthCredential credential = GoogleAuthProvider.getCredential(
      accessToken: googleAuth.accessToken,
      idToken: googleAuth.idToken,
    );
    final FirebaseUser user = await _auth.signInWithCredential(credential);
  }

Facebook:

  void _signInWithFacebook() async {
    final AuthCredential credential = FacebookAuthProvider.getCredential(
      accessToken: _tokenController.text,
    );
    final FirebaseUser user = await _auth.signInWithCredential(credential);
  }

每次打电话都是正确的_signInWithFacebook() and _signInWithGoogle() :

user = await auth.linkWithCredential(credential);

例如:

  void _signInWithFacebook() async {
    final AuthCredential credential = FacebookAuthProvider.getCredential(
      accessToken: _tokenController.text,
    );
    final FirebaseUser user = await _auth.signInWithCredential(credential);

user = await auth.linkWithCredential(credential); //new

  }

我怎样才能正确实施?

Thanks!


当用户输入电子邮件地址进行登录时,您需要使用fetchSignInMethodsForEmail() https://pub.dev/documentation/firebase_auth/latest/firebase_auth/FirebaseAuth/fetchSignInMethodsForEmail.html查明该电子邮件地址是否已知。

如果用户已经与其他提供商注册,那么这是询问他们是否要合并这些帐户的好时机,然后调用帐户链接 API。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将多个身份验证提供商链接到一个帐户 的相关文章

随机推荐

  • 使用 LINQ 或 Lambda 从列表中删除实例?

    现在 我进入了一个阶段 将所有数据作为缓存 对象 中的列表获取 接下来要做的就是从列表中删除一些实例 通常 我会像这样删除 List
  • Python:使用 python 运行 Excel 宏

    我需要通过 python 运行 Excel 宏 但总是收到以下错误 result self oleobj InvokeTypes dispid LCID wFlags retType argTypes args pywintypes com
  • 在 TFS 中,如何提取过去特定日期之间分配给我的所有项目?

    我正在尝试找出在特定日期之间提取我盘子上的所有物品的方法 这可能吗 您能帮我弄清楚如何为此编写查询吗 谢谢 我所知道的最好的办法就是设置 Assigned To Was Ever Me 然后手动扫描返回的工作项列表 根据需要设置其他字段以过
  • 我们什么时候应该在方法中抛出异常或捕获异常?

    我一直在阅读有关异常的更多内容 但我不确定在什么情况下我们应该抛出一个方法 public void fxml throws IOException method body here 或捕获方法内的异常 public void fxml FX
  • Java 中的并行编程

    我们如何在Java中进行并行编程 有什么特殊的框架吗 我们怎样才能让这些东西发挥作用 我会告诉你们我需要什么 认为我开发了一个网络爬虫 它从互联网上爬取了大量数据 一个爬行系统无法使事情正常工作 因此我需要更多的系统并行工作 如果是这种情况
  • Oracle group by 中的字符串聚合

    我已经形成了一个大型查询 它使用以下数据条件获取大型数据集 Column1 Column2 M1 OTH M1 HHM M1 RES M2 HHM M2 RES M3 OTH M3 RES 我需要将其形成为 M1 OTH HHM RES M
  • 如何在 Android 中以编程方式配置启动器活动?

    我正在开发一个具有两项活动的应用程序 LoginActivity and MainActivity 当用户首次打开应用程序时 他将登录并且他的凭据 用户名和令牌 保存在Preferences 现在 如果用户再次打开应用程序MainActiv
  • 使用 PHP 将 mysql 值转储到 JSON 文件中

    我正在尝试使用 PHP 从 mysql 数据库生成 JSON 文件 到目前为止 我有
  • 使用 SqlBulkCopy 时提供流作为二进制列的数据源

    如果需要读取数据fromSqlServer 采用流式传输方式 有一些功能可以实现这一点 比如使用SqlDataReader with CommandBehavior SequentialAccess 特别是当需要访问二进制列数据时 有Get
  • 赋值语句值

    大家都知道 在 Python 中赋值不会返回值 大概是为了避免对if通常只是为了进行比较的语句 gt gt gt if a b File
  • 比较在 Eclipse Neon 中不工作

    我 最后 尝试从 Mars 2 升级到 Eclipse Neon 安装 SVN 支持和 SVNKit 1 8 14 连接器后 我可以访问我的存储库 然而Compare不管用 如果我右键单击已修改的文件 然后选择与工作副本中的基础进行比较将显
  • PayPal Rest API for Payments 在沙箱中返回 NULL

    我有一个 PayPal 沙盒帐户 我可以在 PHP 上使用curl 通过 api 检索令牌 但是处理测试卡只会返回 null 有人看到代码有问题吗 这是 PayPal 沙盒的已知问题吗 下面代码片段中的客户端是伪造的 但是 如前所述 使用我
  • Golang 网络爬虫 NTLM 身份验证

    Golang 网络抓取工具需要从经过 NTLM 验证的网页中提取信息 有了有效的用户名和密码 网络抓取工具如何与服务器进行 NTLM 4 次握手 以获得对后面受保护网页的访问权限 url username password http www
  • Android 的 GCM 推送通知[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 最近 我尝试学习 GCM 并制作一个测试应用程序 该应用程序将通过 androids 官方网站获取 an
  • msinfo32 无法在 Windows XP 下的 NSIS 中运行

    以下 NSIS 行由于某种原因拒绝在 Windows XP 下运行 立即返回 ExecWait PROGRAMFILES Common Files Microsoft Shared MSInfo msinfo32 report DESKTO
  • 接下来使用 Java Scanner 读取文本(Pattern 模式)

    我正在尝试使用 Scanner 类使用 next Pattern pattern 方法读取一行 以捕获冒号之前的文本 然后捕获冒号之后的文本 以便 s1 textbeforecolon 和 s2 textaftercolon 该行看起来像这
  • 对 sf:: 的未定义引用

    我想用 C 制作 GUI 应用程序 发现 SFML 是一个不错的选择 幸运的是 我使用的是 Linux 所以 SFML 2 4 已经安装在我的系统上 所以我开始搜索一些教程并找到了一个制作简单窗口的教程 但是当我运行代码时 出现错误 提示未
  • 如何在 C 中释放指向动态数组的指针?

    我用 malloc 在 C 中创建一个动态数组 即 myCharArray char malloc 16 现在 如果我创建一个这样的函数并通过myCharArray to it reset char myCharArrayp free my
  • npm install [package] 删除软件包

    npm install package 命令正在删除其他软件包 我必须运行 npm install 命令来重新安装它们 这是一项繁琐的任务 所有包都记录在 package json 和 package lock json 文件中 如果我 n
  • 将多个身份验证提供商链接到一个帐户

    我已经实现了 Facebook 和 Google 登录 但 FireBase 文档称 如果同一用户首先使用 Facebook 注册 然后尝试使用 Google 登录 使用相同的电子邮件 这将导致错误 所以我按照文档并尝试配置帐户关联 但我不