Android 应用请求 Firebase 自定义身份验证

Android app request Firebase custom authentication

我是 Firebase 和 Android 编程的新手,我对 Firebase 自定义身份验证有一些疑问。

我构建了一个 android 社交报告应用程序(针对损坏的 public 基础设施),它需要最简单的自动身份验证解决方案。因为它是一个社交报告应用程序,用户不应该通过输入任何类型的数据来打扰注册过程。所以我决定使用 Android uuid 作为用户的标识符,而不是 email/user name/etc。我松散地实现了用户身份验证和注册。它只需要 Android 设备 uuid 到 register/authenticate (甚至不需要密码)。虽然,我认为我已经足够好地保护 firebase 安全规则中的用户数据。

我已经使用 Go 语言成功创建了一个自定义自动 authentication/registration 服务器,它可以生成和存储来自 Firebase 本身的数据。这些是我当前的工作流程:

  1. Android 客户端自动向我的授权服务器发送请求。请求数据包含 Android uuid 和其他几个数据。我打算把它放在 onCreate activity 中。所以每次用户打开应用程序时,它都会请求一个令牌。
  2. 我的身份验证服务器检查该特定 uuid 是否存储在我的 Firebase 中。如果是,则生成 JWT。如果没有,我的服务器将自动在我的 Firebase 中创建一个新的用户数据条目并发回一个新的 JWT。
  3. 以某种方式将 JWT 保存在客户端应用程序中,并使用它与 firebase 进行数据交易。

我设法学习了 Android 的 Firebase 库,它很棒而且非常简单。找了很多Android个http请求库(其中两个是retrofit和volley)。然而,我仍然不确定从 Android 客户端发送身份验证请求的最佳方式。

根据我在上面指定的要求和工作流程,在客户端应用程序中发送自定义身份验证请求的 preferred/simplest 方法是什么?我需要使用http请求库来简化代码吗? sample/snippet 的代码会很有帮助。在客户端应用程序中存储和使用 JWT 的最佳方式是什么?我当前的工作流程是否足够好?非常感谢评价。


附带说明一下,这是我学校的期末项目,不是生产应用程序。所以我不介意复杂的情况,比如用户是否拥有多个 phone,或者购买第二个 phone 应该与前任所有者具有相同的 uuid,等等。另外,请原谅我的怪异 grammar/non-idiomatic 语言,因为我的母语不是英语。

使用 Android 的最简单方法是在 Firebase 身份验证对象 (FirebaseAuth) 上使用 signInWithCustomToken()。

这是文档中的参考资料,包括示例实现代码: https://firebase.google.com/docs/auth/android/custom-auth

祝项目顺利。