Expo应用集成Apple登录Firebase时ID Token受众不匹配问题排查
关于Apple登录ID Token受众
host.exp.Exponent的来源解析 这个host.exp.Exponent是Expo Go客户端默认的Bundle ID/受众标识符,来源核心原因如下:
- 当你在开发阶段用Expo Go测试Apple登录时,Expo Go是Expo官方预签名的通用客户端,它的Bundle ID就是
host.exp.Exponent。此时你的Apple登录请求是通过Expo Go发起的,苹果会把这个客户端的ID作为audience(受众)嵌入返回的ID Token里,而Firebase验证时期望的是你自己配置的Bundle ID/Apple登录服务ID,自然就会出现不匹配的报错。 - 哪怕你在
app.json里已经配置了自己的Bundle ID,在Expo Go里也不会生效——因为Expo Go用的是Expo的开发者证书,不是你自己的,所以Apple登录的身份主体是Expo的客户端,不是你的应用。
补充解决方向(供参考)
要让Firebase能正确验证Apple登录的ID Token,你需要:
- 构建自定义开发客户端(执行
eas build --profile development),用你自己的开发者证书签名,此时应用会使用你配置的Bundle ID,Apple返回的Token受众就会和Firebase的期望一致。 - 生产环境构建(
eas build --profile production)也不会有这个问题,因为生产包是用你自己的证书签名的。
内容的提问来源于stack exchange,提问作者pgk1216
相关产品推荐
相关产品推荐

