如何在FCM HTTP v1 API中检测无效设备令牌?
FCM HTTP v1 API推送通知:无效令牌与Payload错误的区分问题
我们使用FCM HTTP v1 API发送推送通知,用户注册设备令牌时,由于FCM未提供令牌验证API,推送服务器直接将令牌存入数据库,不做前置验证。只有在实际发送推送通知时,推送服务器才能检测设备令牌是否有效。
根据FCM注册令牌管理相关规范,设备令牌无效时,FCM服务器会返回UNREGISTERED或INVALID_ARGUMENT状态码。但INVALID_ARGUMENT状态码也会在Payload无效时返回,这导致我们无法区分这两类错误。
以下是FCM服务器针对两种错误返回的实际响应示例:
无效设备令牌的响应
{ "error": { "code": 400, "message": "该注册令牌不是有效的FCM注册令牌", "status": "INVALID_ARGUMENT", "details": [ { "@type": "type.googleapis.com/google.firebase.fcm.v1.FcmError", "errorCode": "INVALID_ARGUMENT" } ] } }
无效Payload的响应
HTTP/1.1 400 错误请求 { "error": { "code": 400, "message": "收到无效的JSON负载。在'message'处发现未知字段\"priority\":找不到该字段。", "status": "INVALID_ARGUMENT", "details": [ { "@type": "type.googleapis.com/google.rpc.BadRequest", "fieldViolations": [ { "field": "message", "description": "收到无效的JSON负载。在'message'处发现未知字段\"priority\":找不到该字段。" } ] } ] } }
内容的提问来源于stack exchange,提问作者jwchoi
相关产品推荐
相关产品推荐

