FCM v1遇SenderId mismatch权限拒绝错误,求助生成正确服务器密钥
解决FCM v1 403(SenderId mismatch)问题及正确生成服务器密钥方法
1. 确认Sender ID与服务账号的关联
- 登录Firebase控制台,进入项目设置 →「云消息传递」标签,复制页面顶部的Sender ID。
- 打开「服务账号」标签,找到用于生成Bearer Token的服务账号,确认该账号已被授予「Cloud Messaging Admin」或「Editor」及以上权限。
- 检查服务账号对应的项目是否和当前FCM项目完全一致,禁止跨项目使用凭证。
2. 正确生成FCM v1所需的Bearer Token
FCM v1不再使用旧版服务器密钥,需依赖服务账号JSON密钥生成Bearer Token,步骤如下:
- 在Firebase控制台「服务账号」页面,点击「生成新的私钥」,下载JSON格式的服务账号密钥文件。
- PHP生成Token的正确代码(依赖Google官方客户端库):
require __DIR__ . '/vendor/autoload.php'; $credentials = \Google\Auth\Credentials\ServiceAccountCredentials::fromJsonKeyFile( '/path/to/your-service-account-key.json', 'https://www.googleapis.com/auth/firebase.messaging' ); $token = $credentials->fetchAuthToken()['access_token']; - Postman测试手动生成Token(需安装
gcloudCLI并完成登录授权):- 终端运行命令:
gcloud auth application-default print-access-token - 确保生成Token时使用当前FCM项目的默认应用凭证,避免切换至其他项目。
- 终端运行命令:
3. 检查请求中的关键配置
- 请求体中的
topic、token或condition必须属于当前FCM项目下的设备/主题。 - 请求头
Authorization字段格式严格为Bearer {your-token},且Token未过期(有效期约1小时)。
4. 定位错误根源
SenderId mismatch错误通常由以下原因导致:
- 生成Token的服务账号不属于当前FCM项目。
- 请求目标设备的FCM注册令牌是在其他Firebase项目下生成的。
- 服务账号未配置
firebase.messaging权限范围。
5. 替换旧版服务器密钥(若误用)
FCM v1接口不支持旧版服务器密钥,需完全替换为上述Bearer Token调用方式。
内容的提问来源于stack exchange,提问作者James Martin
相关产品推荐
相关产品推荐

