如何在PHP/Laravel中验证从Firebase获取的设备令牌有效性?
验证Firebase Cloud Messaging设备令牌有效性的方法
因为FCM没有专门的令牌验证API,你可以通过以下两种实用方式在存入数据库前验证token的有效性:
1. 发送静默测试通知(推荐)
发送一条不会打扰用户的低优先级静默通知,根据FCM的响应判断token是否有效:
- 构造POST请求到FCM发送端点:
https://fcm.googleapis.com/fcm/send - 请求头需包含:
Authorization: key=你的FCM服务器密钥Content-Type: application/json
- 请求体示例(适配Android和iOS的静默通知):
{ "to": "待验证的Device Token", "priority": "low", "content_available": true, "data": { "test_validation": "true" } }
- 解析响应结果:
- 如果返回的
results数组中没有错误字段,说明token有效 - 若出现
InvalidRegistration或NotRegistered错误,直接判定该token无效,无需存入数据库
- 如果返回的
2. 利用FCM批量发送接口批量验证
如果需要一次性验证多个token,可以使用批量发送接口:
- 请求体改为包含
registration_ids字段(传入多个待验证token)
{ "registration_ids": ["token1", "token2"], "priority": "low", "content_available": true, "data": { "test_validation": "true" } }
- 响应中每个token对应一个结果对象,根据错误码筛选无效token
注意事项
- 不要频繁调用测试接口,FCM有请求频率限制,避免触发限流
- 静默通知不会在用户设备上弹出通知,仅用于验证token有效性
- 验证通过后再将token存入数据库,后续如果推送时收到
NotRegistered错误,要及时从数据库中移除该token
内容的提问来源于stack exchange,提问作者Atlas-Pio
相关产品推荐
相关产品推荐

