微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MessagingErrorCode的成员对应什么错误代码? 将MessagingErrorCode与旧版Admin错误代码相关 mismatched-credential错误代码

如何解决MessagingErrorCode的成员对应什么错误代码? 将MessagingErrorCode与旧版Admin错误代码相关 mismatched-credential错误代码

这与从Firebase客户端版本6到7的迁移有关。

过去,我们在.getException().getErrorCode()的实例上调用com.google.firebase.messaging.SendResponse

我们专门处理了两种情况,"registration-token-not-registered""mismatched-credential"

从版本7开始,可以检索两种不同的错误代码,一种为.getException().getErrorCode()(返回通用的ErrorCode),另一种为.getException.getMessagingErrorCode()(返回更合适的{{1} }。

migration guide to version 7清楚地表明,MessagingErrorCode的第一种情况现在可以用"registration-token-not-registered"处理,并且可以与.getException.getMessagingErrorCode()进行匹配,但是MessagingErrorCode.UNREGISTERED(以及所有其他可能的错误)在任何地方都没有记录。

我能找到的最好的东西是documentation of the enum

但是我不确定是否

用于验证此SDK的凭据无权向与所提供的注册令牌相对应的设备发送消息

(来自Admin Error codes documentation)和

已验证的发件人ID与注册令牌的发件人ID不同。

(来自documentation of the enum MessagingErrorCode.SENDER_ID_MISMATCH)的含义相同...


我的问题是双重的:

  • 是否有一种很好的方法"mismatched-credential"与实际的Admin错误代码相关联?
  • MessagingErrorCode是否正确MessagingErrorCode.SENDER_ID_MISMATCH错误代码

解决方法

MessagingErrorCode与旧版Admin错误代码相关

您引用的Admin error code documentation仅适用于当今的Node.js SDK,它仍然停留在表示API错误的旧方法中。因此,如果您使用Node.js以外的语言进行编码(并使用最新的可用Firebase SDK),请忽略这些旧错误代码,而只处理提供的枚举中明确定义的错误代码。在许多情况下,这些旧错误代码之间没有直接的1:1映射。

有关错误代码的最新信息,请参阅Admin SDK error handling

mismatched-credential错误代码

旧的mismatched-credential错误代码用于表示两个单独的错误情况:

  1. 实际的令牌不匹配错误,其中调用者无权发送给给定的设备令牌。
  2. 由于授权凭证缺少必需的IAM角色/权限而导致的其他一般权限错误。

新的v7 Java SDK区分了这两种情况。情况1由MessagingErrorCode.SENDER_ID_MISMATCH表示。

SENDER_ID_MISMATCH已验证的发件人ID与注册令牌的发件人ID不同。这通常意味着发件人和目标注册令牌不在同一Firebase项目中。

情况2导致ErrorCode.PERMISSION_DENIED的值没有MessagingErrorCode

PERMISSION_DENIED客户端没有足够的权限。之所以会发生这种情况,是因为OAuth令牌的权限范围不正确,客户端没有权限或未为客户端项目启用API。

大多数开发人员只想在其代码中处理情况1。情况2几乎总是配置错误。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?