使用FCM V1服务发送Web推送通知时遭遇401第三方认证错误的技术求助
FCM V1 Web推送401认证错误排查求助
我最近尝试用FCM V1 API发送Web推送通知,用的curl命令如下:
curl --location --request POST 'https://fcm.googleapis.com/v1/projects/<project-id>/messages:send' \ --header 'Authorization: Bearer <Oauth token>' \ --header 'Content-Type: application/json' \ --data-raw '{ "message": { "token": "fcm-token", "data": { "body": "Body of Your Notification in data", "title": "Title of Your Notification in data", "key_1": "Value for key_1", "key_2": "Value for key_2" } } }'
但收到了401的错误响应:
{ "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" } ] } }
我已经尝试了两篇Medium文章里的解决方案,但问题还是没解决,现在实在找不到原因,想请教大家有没有排查的方向?
给你几个具体的排查方向,你可以逐一试试:
- 优先检查VAPID密钥配置:这个错误提示是Web Push服务的认证失败,FCM V1对Web推送要求必须关联正确的VAPID密钥。你可以去Firebase控制台的「项目设置」→「云消息传递」→「Web配置」里,确认已经上传了有效的VAPID公钥,并且前端订阅推送时使用的是同一个公钥。如果密钥不匹配,Web Push服务会直接拒绝FCM的请求。
- 验证OAuth令牌的权限范围:确保你获取的Bearer令牌包含了
https://www.googleapis.com/auth/firebase.messaging这个必要的权限。如果令牌的scope不对,FCM没有足够权限和Web Push服务完成认证流程。你可以用谷歌的令牌验证工具检查令牌的权限详情。 - 确认FCM令牌的有效性:虽然错误是认证类的,但有时候无效、过期或者被用户注销的FCM令牌也会触发这类第三方错误。你可以先确认这个token是当前前端正常订阅生成的,没有出现异常状态。
- 检查项目Web推送的启用状态:去Firebase控制台确认你的Web应用已经正确启用了云消息传递功能,VAPID密钥的状态是正常的。有时候密钥上传后需要等待几分钟才能生效,不妨等一会儿再重新测试。
- 核对请求的基本信息:再仔细检查下请求URL里的
<project-id>是否拼写正确,Authorization头里的Bearer令牌有没有复制错误(比如多余的空格、换行符),确保请求的参数格式完全符合FCM V1的要求。
内容的提问来源于stack exchange,提问作者Rajkishor Pradhan
相关产品推荐
相关产品推荐

