Expo推送通知配置报FCM服务密钥无效问题咨询
问题根因
调用Notifications.getExpoPushTokenAsync被要求传入experienceId、推送时报FCM服务密钥缺失错误,两个问题同源:当前异常应用没有被Expo服务识别为绑定到对应Expo账号下的合法项目。
Expo Push在Android端的投递底层默认依赖FCM通道,Expo官方会为所有正确绑定账号的托管项目提供公共FCM配置,不需要开发者自行申请FCM服务;如果项目未完成账号关联校验,Expo服务无法为其匹配公共FCM配置,就会抛出你看到的凭证错误,同时强制要求传入experienceId做项目归属校验。
修复步骤
- 校验
experienceId参数准确性
传入的experienceId格式为@账号标识/项目slug,必须和Expo侧配置完全匹配:- 个人账号下的项目,
账号标识为你的Expo个人用户名 - 组织下的项目,
账号标识为对应Expo组织的ID 项目slug必须和项目app.json/app.config.js中expo.slug字段值完全一致,大小写、特殊字符不能有偏差
- 个人账号下的项目,
- 完成本地项目与Expo账号的关联
如果你使用裸工作流、或者本地构建的安装包:- 在项目根目录执行
expo login,确认当前登录的Expo账号拥有目标项目的访问权限 - 执行
eas init,按照提示将本地项目与Expo后台对应slug的项目做绑定 - 调试阶段不要直接离线打开安装包,需要先执行
expo start --dev-client启动本地开发服务,再打开调试应用,离线状态下Expo无法完成项目归属校验,会持续触发FCM配置读取失败
- 在项目根目录执行
- 修正Expo后台推送配置
- 登录Expo控制台进入对应项目的推送配置页,检查Android推送配置板块:如果之前手动填写过自定义FCM密钥,直接清空内容后保存,Expo会自动回退使用官方公共FCM配置,不需要你自行申请FCM相关凭证
- 配置修正后,重新调用
Notifications.getExpoPushTokenAsync生成全新的Expo推送Token,之前关联失败生成的旧Token直接废弃,使用新Token测试推送即可
- 多项目调试场景兼容
如果你在同一开发环境切换多个Expo项目调试,先执行expo whoami确认当前登录账号匹配目标项目,再清除测试设备上的应用缓存后重启,避免本地缓存了其他项目的配置导致参数校验失败。
补充说明:即便你不主动对接FCM服务,Android端Expo Push依然会通过FCM通道完成消息投递,只是Expo官方托管了公共FCM凭证,不需要开发者额外做FCM侧的开发、配置工作。
内容的提问来源于stack exchange,提问作者Alberto
相关产品推荐
相关产品推荐

