我正在尝试通过电子邮件在后端获取用户的用户ID。我正在使用的代码是这个。
val user:UserRecord?
try {
user=FirebaseAuth.getInstance().getUserByEmail(email)
}catch(e:Exception){
map["msg"]=e.localizedMessage
return map
}
map["msg"]=FirebaseAuth.getInstance().createCustomTokenAsync(user.uid).get()
return map
第3行产生一个异常。
com.google.firebase.auth.FirebaseAuthException: No user record found for the
provided email: id
at com.google.firebase.auth.FirebaseUserManager.getUserByEmail(FirebaseUserManager.java:138)
at com.google.firebase.auth.FirebaseAuth$7.execute(FirebaseAuth.java:613)
at com.google.firebase.auth.FirebaseAuth$7.execute(FirebaseAuth.java:610)
at com.google.firebase.internal.CallableOperation.call(CallableOperation.java:36)
at com.google.firebase.auth.FirebaseAuth.getUserByEmail(FirebaseAuth.java:590)
at in.ac.krishnacollege.CheckTeacherResource.checkTeacherEmail(CheckTeacherResource.kt:27)
函数getUserByEmail()应该返回null,但会引发异常。
答案 0 :(得分:0)
我不是Firebase的专家。 (我从字面上将“ Firebase getUserByEmail”放到了网络搜索中。)但是粗读Firebase Guide for managing users可以说是getUserByEmail(email)
:
此方法返回对应于用户的UserRecord对象 提供的电子邮件。
如果提供的电子邮件不属于现有用户或该用户 由于其他任何原因而无法获取,则Admin SDK会引发错误。 有关错误代码的完整列表,包括描述和解决方法 步骤,请参见Admin Authentication API Errors。
没有没有提及为上述任何用户查找方法返回null的问题。所有示例都在catch
块中显示错误处理(至少对于Javascript示例而言), not 空处理。至少对于此处描述的版本和发行版。
没有Kotlin的例子。 Java示例未显示异常处理,但是并没有改变对错误处理方式的解释,您可以在自己的代码中清楚地看到错误异常。
在某些情况下,此方法在JVM语言下会返回null,但这不是这种情况。