如何通过Firebase REST AUTH API检查指定邮箱是否已注册
通过Firebase Auth REST API查询邮箱注册状态的实现方案
你提到的createAuthUri就是官方提供的无登录态下查询邮箱注册状态的标准接口,不需要提前获取用户ID或用户登录凭证,完全适配纯REST调用的非客户端场景。
接口基础配置
- 请求方法:
POST - 请求地址:
https://identitytoolkit.googleapis.com/v1/accounts:createAuthUri?key=<你的Firebase Web API Key>注:这里的API Key是Firebase控制台「项目设置-常规」页面中的Web API Key,不是服务账号私钥。该接口本身设计为公开调用,用于登录前置的身份提供方查询,不需要额外签名或管理员权限。
请求参数说明
请求体为JSON格式,仅需传2个必填字段:
{ "identifier": "待查询的目标邮箱地址", "continueUri": "https://example.com" }
参数说明:
identifier:填你要校验的邮箱字符串即可continueUri:接口规范要求的必填字段,原本用于存储认证完成后的跳转地址,仅做注册状态查询时,填任意合法的HTTP/HTTPS地址即可,不需要真实可访问,填本地调试地址、自己的业务域名都不影响返回结果。
结果判断规则
接口返回的JSON结构中,核心判断字段为registered(布尔值):
- 当
registered为true时,代表该邮箱已在当前Firebase项目完成注册,同时返回的signinMethods数组会列出该邮箱绑定的所有登录方式(值为password代表邮箱密码注册,其余值对应Google、Facebook等第三方登录渠道) - 当
registered为false时,代表该邮箱从未在当前项目注册,可直接引导用户走注册流程
返回示例:
{ "kind": "identitytoolkit#CreateAuthUriResponse", "registered": true, "signinMethods": ["password"], "sessionId": "xxxxxx" }
避坑提示
- 不要通过「输入错误密码调用登录接口看返回错误」的方式判断邮箱是否存在,这种操作会触发Firebase的异常登录防护机制,频繁调用会被限流,还可能影响项目的安全评分
getAccountInfo接口要么需要用户登录后返回的idToken,要么需要服务账号的管理员权限,确实不适合未认证场景下的前置查询,你之前对这个接口的判断是正确的- 该接口自带Firebase默认的防滥用限流策略,正常用户注册、登录流程中的查询频率不会触发限制,不要用它做批量邮箱爬取即可
内容的提问来源于stack exchange,提问作者Jacob Stone
相关产品推荐
相关产品推荐

