【发布时间】:2015-03-06 14:55:06
【问题描述】:
我试图找出一种干净简单的方法来获取在使用 Java SDK 时调用 createUser() 产生的 uid。这在使用 Javascript SDK(例如,this question/answer)时很容易做到。我还在 context of the Firebase iOS API 中看到了 Stackoverflow 上提出的问题,这显然不是那么容易。我的问题是如何使用 Firebase Java SDK 来做到这一点。具体来说,我的用例与 iOS 相关问题中的用例相同,即允许管理员用户创建用户帐户(电子邮件/密码身份验证),并以 uid 作为密钥将有关创建用户的其他信息存储在 Firebase 中。了解并使用 uid 作为密钥是必不可少的,因为它是安全规则的基础。
我已经看到了一些建议的解决方案,它们都涉及在创建新用户帐户后要执行的一些程序。这些是
- query the Firebase using the email address
- Login as the new user and use the authData to get the uid
无论哪种方式,我都有一个复杂的解决方案,其中包含多个异步回调来处理使用 Javascript API 时微不足道的问题。
因此,我有三个具体问题:
- 目前有没有比我上面列出的两种方法更好的方法?
- 如果我使用第二种方法并以新创建的用户身份登录,这是否会覆盖管理员令牌(即注销创建用户的管理员),这反过来意味着新的安全规则适用?
- 是否预计 Android 和 Java SDK 将很快升级,以便
createUser()API 与 Javascript 版本相同?
更新:深入挖掘并进行一些实验,我找到了问题的答案。事实证明,Firebase 提供的 API 文档已过时和/或不一致。
关于 Q1:根据Javadoc for createUser(),唯一可用的回调处理程序是Firebase.ResultHandler。但是根据Changelog、API Reference document 和Creating User Accounts 上的文档,也可以使用Firebase.ValueResultHandler。这提供了对 UID 的直接访问
关于 Q2:答案是肯定的。对新创建的用户帐户进行身份验证会导致替换 auth 令牌。
关于 Q3:真正的问题应该是“Firebase 人员何时会更新 Javadoc?”或者更好的问题是“为什么发布新版本的 SDK 时没有更新和准确的文档?”
【问题讨论】:
标签: firebase firebase-realtime-database firebase-authentication