如何从Firebase ID Token中移除phone_number、email字段?
Firebase ID Token隐藏phone_number/email字段的实现方案
Firebase官方签发的标准ID Token(客户端SDK获取的那种)由Google服务器签名,内置的核心身份字段(如phone_number、email)无法直接修改或移除——这是Auth服务的默认机制,任何篡改都会导致Token验证失败。以下是两种可行的替代方案:
方案1:自行签发精简版自定义Token
通过Firebase Admin SDK生成基础自定义Token后,用自有密钥签发完全可控的JWT:
- 调用
createCustomToken(uid)生成仅包含用户UID的基础自定义Token - 在后端服务器验证该Token,获取完整用户信息(此步骤仅在服务端执行,不对外暴露敏感字段)
- 使用JWT库(如
jsonwebtoken)和自有密钥,生成仅包含你所需字段(如UID、自定义Claims)的新Token返回给客户端
方案2:服务端中转过滤字段
借助Firebase自定义Claims,在后端做一层信息筛选:
- 提前通过
setCustomUserClaims()为用户添加你需要的自定义字段 - 客户端将标准ID Token发送到你的后端服务器
- 用
verifyIdToken()解码Token后,仅提取允许对外暴露的字段(如UID、自定义Claims),封装成轻量对象或简化Token返回给客户端
内容的提问来源于stack exchange,提问作者MatanyaP
相关产品推荐
相关产品推荐

