如何解决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
错误代码用于表示两个单独的错误情况:
- 实际的令牌不匹配错误,其中调用者无权发送给给定的设备令牌。
- 由于授权凭证缺少必需的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 举报,一经查实,本站将立刻删除。