FCM:无效的注册令牌。检查令牌格式
Posted
技术标签:
【中文标题】FCM:无效的注册令牌。检查令牌格式【英文标题】:FCM: Invalid registration token. Check the token format 【发布时间】:2017-04-30 17:43:12 【问题描述】:我正在实施 Firebase 云消息传递 (FCM),但遇到了一个我无法解决的问题。我根据指南实施了FirebaseMessagingService
和FirebaseInstanceIdService
。当我为我的应用转到 Firebase 控制台并使用通知功能时,我可以成功地向我的所有应用实例发送一条消息(使用包名称)。
现在,在代码中,我使用以下代码获取了 Firebase 实例 ID(令牌):
String token = FirebaseInstanceId.getInstance().getToken();
SendFirebaseTokenToServer(token);
(请注意,目前我使用的是 HTTP 协议,因为我的服务器还没有证书)。无论如何,使用从上面的调用中获得的令牌,我返回 Firebase 控制台并尝试向我的应用程序的一 (1) 个已安装实例发送消息。我从存储为“varchar(max)”的服务器数据库中获取令牌。当我这样做时,我收到以下错误消息:
Invalid registration token. Check the token format.
我在谷歌上搜索了一下,只找到了一个结果(与 Firebase 和 ios 有关):
http://***.com/questions/41343520/ios-invalid-registration-token-check-the-token-format
该问题表明需要证书(我想我没看错)。我不确定我做错了什么。我需要首先使用 Firebase 控制台让它工作,然后我的服务器人员可以在知道它应该工作的情况下从头开始。
【问题讨论】:
好的,我决定使用从 Firebase 调用(吐出到 Logcat)中获得的 registration_id(令牌)直接尝试 Firebase 控制台(无服务器交互)。有效!所以问题存在于服务器上或我将其发送到服务器上。我应该 Encode() 令牌吗? 如果您的应用服务器的代码中存在问题,请编辑您的问题以包含minimal server code that reproduces the problem。如果没有看到该代码,就很难说它有什么问题。 @FrankvanPuffelen 过去几天我面临同样的问题。你能读一下我的问题吗? ***.com/questions/50359010 【参考方案1】:原来我在发送到我们的服务器之前以编程方式对所有 POST 或 PUT 参数进行编码。 FCM 令牌中有一个分号,它被编码为“%3A”,似乎导致了问题。
不要对 FCM 令牌进行编码。
【讨论】:
面临完全相同的问题,我在这里建议您应该在传入查询字符串时专门对 FCM 令牌进行编码,然后在服务器端对其应用 url 解码。以上是关于FCM:无效的注册令牌。检查令牌格式的主要内容,如果未能解决你的问题,请参考以下文章