技术咨询:能否从FirebaseAuth获取用户详情及手机号?
当然可以!我来分别给你拆解这两个问题:
问题1:能否从FirebaseAuth中获取用户的详细信息?
完全没问题!FirebaseAuth在用户成功认证后,会返回一个包含用户基础信息的User对象,你可以从中获取到不少实用的字段,比如:
- 用户唯一标识符
uid(所有认证方式都会返回) - 显示名称
displayName(若用户设置过或来自Google/Facebook等第三方登录) - 邮箱地址
email(仅当用户通过邮箱/密码或第三方关联了邮箱时存在) - 头像URL
photoUrl(来自用户设置或第三方登录信息) - 手机号
phoneNumber(仅当用户通过手机号认证时存在,也就是你第二个问题关注的内容)
举个Kotlin示例代码,获取当前登录用户的信息:
val currentUser = FirebaseAuth.getInstance().currentUser currentUser?.let { user -> println("用户UID:${user.uid}") user.displayName?.let { println("用户昵称:$it") } user.email?.let { println("用户邮箱:$it") } user.photoUrl?.let { println("头像地址:${it.toString()}") } } ?: run { println("当前没有已登录的用户") }
需要注意:不同认证方式返回的字段会有差异,比如纯手机号登录的用户可能没有email和displayName,除非你后续手动给用户补充了这些信息。
问题2:手机号认证登录的应用,能否从FirebaseAuth中获取用户手机号?
必须可以!当用户通过手机号成功完成认证后,User对象里的phoneNumber字段就会被填充上用户的手机号(格式一般带国际区号,比如+8613xxxxxxxxx)。
用Kotlin代码示例展示获取方式:
val currentUser = FirebaseAuth.getInstance().currentUser currentUser?.phoneNumber?.let { phoneNumber -> println("用户的手机号:$phoneNumber") } ?: run { // 两种情况:要么无登录用户,要么用户未通过手机号认证 println("无法获取用户手机号,请检查用户是否已登录且使用手机号认证") }
小提醒:如果用户是通过其他方式(如邮箱)登录后再关联手机号,同样能获取到phoneNumber字段;但如果用户未完成手机号认证流程,或使用其他认证方式,这个字段会是null,所以一定要做非空判断哦。
内容的提问来源于stack exchange,提问作者Tech Pranay
相关产品推荐
相关产品推荐

