如何将Firebase Phone Auth接入现有手机号登录流程获取用户UID?
方案解答
完全可以在不改动现有用户登录流程、不接入社交登录的前提下,集成Firebase Phone Auth体系获取UID用于安全规则校验,具体实现逻辑如下:
核心实现思路
利用Firebase Auth的自定义登录能力,在你现有手机号验证流程的末端静默完成Firebase身份注册/登录,全程用户无感知,不会改变任何现有交互逻辑。
具体落地步骤
- 服务端接入Firebase Admin SDK,在你现有逻辑完成手机号验证码校验、确认用户身份合法后,调用Admin SDK接口为该手机号生成对应Firebase账号的自定义登录Token。如果该手机号是首次登录,Admin SDK会自动创建对应Firebase账号,重复登录则直接返回已有账号的Token。
- 客户端在收到你自己服务端返回的「登录成功」响应的同时,拿到上述生成的自定义Token,调用
signInWithCustomToken方法完成Firebase Auth的静默登录,即可获取对应用户的UID,后续调用Firebase相关数据库SDK时,身份信息会自动附带,无需额外传参。
安全规则配置示例
拿到UID后你就可以将原有公开规则调整为私有校验模式,参考示例如下:
Firestore 规则示例
rules_version = '2'; service cloud.firestore { match /databases/{database}/documents { match /user_data/{uid}/{document=**} { allow read, write: if request.auth != null && request.auth.uid == uid; } } }
Realtime Database 规则示例
{ "rules": { "user_data": { "$uid": { ".read": "$uid === auth.uid", ".write": "$uid === auth.uid" } } } }
注意事项
- 全程不会增加用户的操作步骤,原有登录交互完全保留,用户感知不到Firebase Auth的接入。
- 无需开启任何社交登录能力,仅使用Firebase Auth的基础身份校验功能即可满足需求。
- 你可以自行在服务端绑定自有用户体系的用户ID和Firebase UID的映射关系,方便后续数据管理。
内容的提问来源于stack exchange,提问作者Shubham Agrawal
相关产品推荐
相关产品推荐

