Firebase FCM HTTP旧版接口突发失效,切换v1仍遇认证错误求助
Firebase FCM推送AuthenticationError问题排查
问题情况
约三周前,原本正常运行的FCM推送功能突然失效,客户端无法接收推送。调用旧版FCM接口和HTTP v1接口均返回认证类错误。
旧版FCM接口请求信息
- 请求URL:
https://fcm.googleapis.com/fcm/send - 请求头:
Content-Type: application/jsonAuthorization: key=AAAAKFe-...oRpS(密钥取自Firebase设置页面)
- 请求体:
{ "to": "dmx5JJ...dnPb7", "data": { "title": "title", "alertId": 1276318267, "alertMappingId": 1238716233, "data": "hehehe" } }
注:此处to字段使用的是Web客户端获取的idToken
旧版接口错误响应
{"multicast_id":5347538896185294090,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"AuthenticationError"}]}
HTTP v1接口错误响应
切换至v1接口后,返回类似认证错误:
{ "error": { "code": 401, "message": "Auth error from APNS or Web Push Service", "status": "UNAUTHENTICATED", "details": [{ "@type": "type.googleapis.com/google.firebase.fcm.v1.FcmError", "errorCode": "THIRD_PARTY_AUTH_ERROR" }] } }
排查方向
- 核心错误:推送令牌误用:你把用户身份验证的
idToken当成了FCM的推送令牌(registration token)。FCM推送需要的是客户端通过getToken()方法获取的registration token,而非用户登录的idToken,这是导致认证失败的关键原因。 - 验证服务器密钥有效性:确认Authorization头中的服务器密钥是Firebase控制台「项目设置」→「云消息传递」下的服务器密钥,不要混淆Web API密钥或其他类型的密钥,同时检查密钥是否被重置过。
- v1接口授权方式错误:FCM HTTP v1接口不支持用旧版服务器密钥授权,需要使用服务账号生成的OAuth2访问令牌,按流程生成并替换授权头。
- Web客户端推送配置检查:确保客户端正确初始化FCM,调用
getToken()获取有效推送令牌,同时检查域名是否在Firebase控制台的「云消息传递」→「Web配置」中添加为允许的来源。 - APNS相关排查(针对Web推送):错误提示提到APNS认证问题,如果涉及Safari浏览器推送,检查APNS证书是否过期、bundle ID是否与项目配置匹配,以及证书是否正确上传至Firebase控制台。
内容的提问来源于stack exchange,提问作者Anh Xi
相关产品推荐
相关产品推荐

