首页 > 解决方案 > 如何处理多个身份验证提供程序(firebase)

问题描述

我正在开发我的第一个手机游戏并在其中实现 firebase 身份验证(使用 Firestore)。

我在理解如何管理多个身份验证提供程序时遇到了一些困难(以架构方式)

假设一个用户在他的 iPhone 和他的 iPad 上玩我的游戏。当然,他想在两个设备上检索他的游戏进度。在我的游戏中,您可以通过以下方式进行身份验证:

我如何处理将与所有这些提供者一起进行身份验证的用户。如果用户首先在两台设备上匿名身份验证,它将创建两个不同的用户。现在,如果他在 iPhone 上使用 GameCenter 身份验证并想在他的 iPad 上检索他的帐户,我该如何处理。我是否必须将匿名 iPhone 帐户与 GameCenter 关联(例如使用 LinkWithCredential),然后当他在 iPad 上与 GameCenter 连接时,将检索 iPhone 的数据?还是我必须创建另一个不同的用户?如果在此之上添加一个 Facebook 连接(例如,由于 Facebook 身份验证,用户想要在 Android 设备上检索他的数据)会怎样。

我对此有点困惑,而且火力基地并没有真正帮助我(也许我误解了它)。

标签: androidiosfirebasefirebase-authentication

解决方案


如果用户首先在两台设备上匿名身份验证,它将创建两个不同的用户。

每台设备上将有两个不同的匿名帐户。

现在,如果他在 iPhone 上使用 GameCenter 身份验证并想在他的 iPad 上检索他的帐户,我该如何处理?我是否必须将匿名 iPhone 帐户与 GameCenter 关联(例如使用 LinkWithCredential)?

是的,你可以这么做。但是这是什么意思?这意味着您将 iPhone 上的匿名帐户转换为真正的“GameCenter”帐户,这意味着它将能够在未来的会话中继续使用相同的数据。

然后当他将他的 iPad 与 GameCenter 连接时,将检索 iPhone 的数据?

可以,但前提是 iPad 上使用的 GameCenter 帐户与 iPhone 上使用的相同。但请记住,如果您尝试使用相同的凭据将 iPad 上的匿名帐户转换为 GameCenter 帐户,您将收到一条错误消息,指出此类帐户已存在。

还是我必须创建另一个不同的用户?

无需创建另一个用户,您可以在每台设备上使用相同的凭据。

如果在此之上添加一个 Facebook 连接(例如,由于 Facebook 身份验证,用户想要在 Android 设备上检索他的数据)会怎样。

GameCenter 和 Facebook 是两个不同的提供商。同样,如果您尝试使用具有相同凭据的其他提供商,您将收到相同的错误,因为该帐户已经存在。


推荐阅读