如何处理多个身份验证提供程序(firebase)

时间:2021-03-03 14:47:03

标签: android ios firebase firebase-authentication

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

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

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

  • 匿名:默认的。每次安装都会创建一个新会话 游戏实例。
  • 使用苹果游戏中心
  • 通过脸书

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

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

1 个答案:

答案 0 :(得分:1)

<块引用>

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

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

<块引用>

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

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

<块引用>

然后当他在 iPad 上连接 GameCenter 时,会检索到 iPhone 的数据吗?

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

<块引用>

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

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

<块引用>

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

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