Firebase Auth模拟器调用邮箱密码登录REST端点的正确方式
Firebase Auth 模拟器密码登录REST端点配置方案
Auth模拟器完全兼容线上Firebase Auth的REST接口规范,不存在功能缺失,之前请求报错的核心原因是路径结构和模拟器的路由规则不匹配。
正确的对等端点格式
当Auth模拟器运行在本地9099端口时,和线上/v1/accounts:signInWithPassword功能完全对等的请求地址为:http://localhost:9099/identitytoolkit.googleapis.com/v1/accounts:signInWithPassword?key=[你的项目API Key]
之前试错路径的问题说明
- 直接拼接
http://localhost:9099/v1/accounts:signInWithPassword的写法不对:模拟器的路由规则要求请求路径必须带上完整的线上服务域名前缀,不能直接省略服务域名段 - 拼接
/emulator/v1前缀的路径不对:这个路径段是预留的模拟器管理接口(比如清空账号、导出用户数据)专用前缀,不承载业务侧的用户登录、注册等常规Auth接口 - 尝试旧版
/identitytoolkit/v3/relyingparty/verifyPassword路径不对:当前版本的Auth模拟器已全面切换为v1接口路由,不再兼容旧的v3版业务路径 - 拼接
/projects/[项目ID]/accounts的路径返回权限不足是正常的:这个路径属于账号批量管理类接口,要求请求携带管理员权限的身份凭证,裸请求没有权限访问该类接口,本身也不是密码登录的目标端点
请求使用注意事项
- 必须使用POST方法发起请求,和线上接口的方法要求完全一致,用GET方法请求该端点会直接返回404
- 请求体格式和线上环境完全一致,不需要为模拟器做适配,示例结构如下:
{ "email": "test@example.com", "password": "登录密码", "returnSecureToken": true } - 查询参数里的
key字段填本地测试项目对应的API Key即可,模拟器不会像线上环境一样严格校验Key的真实性,只要格式符合要求就能正常路由到对应逻辑 - 不需要在路径里额外拼接项目ID参数,模拟器会自动关联当前运行的默认测试项目实例
- 如果使用自定义域名映射到9099端口(比如
identitytoolkit.localhost:9099这类格式),请求路径也必须保持/identitytoolkit.googleapis.com/v1/accounts:signInWithPassword的完整结构,不能省略服务域名段
内容的提问来源于stack exchange,提问作者MikeG
相关产品推荐
相关产品推荐

