验证FCM令牌所属域名:Firefox令牌无法获取域名问题咨询
解答
能否通过FCM设备令牌获取所有浏览器端的域名?
可以,但要适配不同浏览器的实现差异:
- Chrome环境下,FCM令牌与注册站点域名强绑定,调用
https://iid.googleapis.com/iid/info/<FCM_TOKEN>接口(需携带Firebase服务器密钥作为Authorization: key=<你的服务器密钥>请求头)会返回包含域名的关联字段,比如authorized_entity或站点标识。 - Firefox环境下,IID接口不会直接返回域名,这是Firefox对FCM SDK的实现逻辑导致的。解决方法是在令牌生成阶段主动存储关联关系:
- 调用
messaging.getToken()生成FCM令牌时,同时将当前页面的window.location.hostname与令牌配对,存入你的后端数据库。 - 后续需要查询域名时,直接通过令牌从数据库中匹配对应的记录即可。
- 调用
关于FirebaseAuth.getInstance().verifyIdToken(idToken)的错误使用
你混淆了FCM设备令牌和Firebase Auth ID令牌的用途:
- FCM设备令牌是用于推送消息的设备标识,和用户身份认证无关;
verifyIdToken()是专门验证Firebase Auth生成的用户身份令牌的方法,无法解析FCM设备令牌的信息。 - 如果之前调用IID接口时未携带正确的服务器密钥,也可能导致返回信息不完整,这也是Firefox下无法获取域名的潜在原因。
内容的提问来源于stack exchange,提问作者Sajjad Farid Serajari
相关产品推荐
相关产品推荐

