android - 如何处理多个身份验证提供程序(firebase)
问题描述
我正在开发我的第一个手机游戏并在其中实现 firebase 身份验证(使用 Firestore)。
我在理解如何管理多个身份验证提供程序时遇到了一些困难(以架构方式)
假设一个用户在他的 iPhone 和他的 iPad 上玩我的游戏。当然,他想在两个设备上检索他的游戏进度。在我的游戏中,您可以通过以下方式进行身份验证:
- 匿名:默认的。在游戏的每个安装实例上都会创建一个新会话。
- 与苹果游戏中心
- 与脸书
我如何处理将与所有这些提供者一起进行身份验证的用户。如果用户首先在两台设备上匿名身份验证,它将创建两个不同的用户。现在,如果他在 iPhone 上使用 GameCenter 身份验证并想在他的 iPad 上检索他的帐户,我该如何处理。我是否必须将匿名 iPhone 帐户与 GameCenter 关联(例如使用 LinkWithCredential),然后当他在 iPad 上与 GameCenter 连接时,将检索 iPhone 的数据?还是我必须创建另一个不同的用户?如果在此之上添加一个 Facebook 连接(例如,由于 Facebook 身份验证,用户想要在 Android 设备上检索他的数据)会怎样。
我对此有点困惑,而且火力基地并没有真正帮助我(也许我误解了它)。
解决方案
如果用户首先在两台设备上匿名身份验证,它将创建两个不同的用户。
每台设备上将有两个不同的匿名帐户。
现在,如果他在 iPhone 上使用 GameCenter 身份验证并想在他的 iPad 上检索他的帐户,我该如何处理?我是否必须将匿名 iPhone 帐户与 GameCenter 关联(例如使用 LinkWithCredential)?
是的,你可以这么做。但是这是什么意思?这意味着您将 iPhone 上的匿名帐户转换为真正的“GameCenter”帐户,这意味着它将能够在未来的会话中继续使用相同的数据。
然后当他将他的 iPad 与 GameCenter 连接时,将检索 iPhone 的数据?
可以,但前提是 iPad 上使用的 GameCenter 帐户与 iPhone 上使用的相同。但请记住,如果您尝试使用相同的凭据将 iPad 上的匿名帐户转换为 GameCenter 帐户,您将收到一条错误消息,指出此类帐户已存在。
还是我必须创建另一个不同的用户?
无需创建另一个用户,您可以在每台设备上使用相同的凭据。
如果在此之上添加一个 Facebook 连接(例如,由于 Facebook 身份验证,用户想要在 Android 设备上检索他的数据)会怎样。
GameCenter 和 Facebook 是两个不同的提供商。同样,如果您尝试使用具有相同凭据的其他提供商,您将收到相同的错误,因为该帐户已经存在。
推荐阅读
- angular - InnerHTML 指令忽略 Angular 中的 html 标签
- java - 您可以将字符串数组列表中的元素传递给函数吗?
- javascript - 切换选择所有复选框 - 未禁用
- javascript - 将 Laravel 集合/数组转换为 Javascript 数组
- javascript - 满足条件时如何让我的函数运行?
- android - 为一周中的特定日期设置警报管理器
- uml - 如何绘制两个系统的用例?
- python-3.x - 无法在 python 的插入语句中使用参数?
- c++ - 如何访问定义为固定大小的向量?
- javascript - 更改 Highchart 的饼图 .xls 文件类别列名