使用Firebase Admin REST API创建用户后lookup查询未返回手机号的问题
问题分析与解决方法
核心原因
你使用的accounts/signUp接口是面向邮箱/密码登录流程的,虽然允许传入phoneNumber字段,但这个字段只会被当作未验证的用户属性存储,Firebase Authentication默认不会在lookup查询中返回未验证的手机号。另外,该接口不会自动触发手机号验证流程,所以即使传入了手机号,它也不会被标记为已验证状态。
解决步骤
正确创建带手机号的用户(推荐用Admin API)
放弃用signUp接口,改用Firebase Admin REST API的accounts:create端点创建用户,这个接口支持直接设置手机号,还可以标记为已验证(如果你已经通过其他方式验证过用户手机号)。请求示例:{ "email": "user@example.com", "password": "12345", "phoneNumber": "+15555555555", "displayName": "user1", "phoneNumberVerified": true }用这个方式创建的用户,
lookup查询会直接返回phoneNumber字段。修复已创建的用户
如果已经用signUp创建了用户,需要两步操作:- 调用
accounts:update接口,传入用户的idToken和phoneNumber,触发手机号验证流程,让用户完成短信验证; - 验证完成后,手机号会被标记为已验证,此时再执行
lookup就能返回该字段。
或者,如果你有管理员权限,直接用Admin API的accounts:update端点(无需用户参与)将phoneNumberVerified设为true,这样也能让lookup返回手机号。
- 调用
额外注意
lookup接口返回的字段依赖于用户属性的验证状态,未验证的手机号、邮箱等敏感字段默认不会被返回,这是Firebase的安全策略。
内容的提问来源于stack exchange,提问作者Asdfg
相关产品推荐
相关产品推荐

