Flutter中如何从Firebase Auth获取所有已认证用户ID
回答
首先明确结论:Flutter客户端无法直接从Firebase Auth获取全量已认证用户的ID列表,这是Firebase官方的安全设计,客户端SDK未开放对应能力,避免批量用户数据泄露。
如果要实现该需求,必须通过Firebase Admin SDK在可信服务端完成,具体方案如下:
- 部署Firebase Admin SDK到可信环境,可选Cloud Functions、自有服务器等,只有Admin SDK才提供拉取全量用户的接口
- 在服务端调用
listUsers()方法拉取用户列表,该接口单次最多返回1000条用户数据,用户量超过1000时需要用返回的pageToken参数分页拉取,遍历所有用户记录提取UID即可 - 给服务端接口添加严格的权限校验,仅允许项目管理员身份调用,绝对不可开放给普通用户,避免全量用户ID泄露带来安全风险
- Flutter端需要拉取列表时,请求上述加了权限校验的服务端接口,拿到返回的UID列表即可使用
注意:严禁将Admin SDK的密钥或凭证放到Flutter客户端代码中,凭证一旦泄露,攻击者可直接操作你项目的所有Firebase资源,会造成极其严重的安全事故。
如果仅用于本地测试,你也可以在本地运行Admin SDK脚本直接导出全量用户ID,无需额外部署后端接口。
内容的提问来源于stack exchange,提问作者KTJ
相关产品推荐
相关产品推荐

