MessagingErrorCode 的成员对应什么错误码?
What error codes do members of MessagingErrorCode correspond to?
这是关于从 Firebase 客户端版本 6 到 7 的迁移。
过去,我们在 com.google.firebase.messaging.SendResponse
的实例上调用了 .getException().getErrorCode()
。
我们具体处理了两个案例,"registration-token-not-registered"
和"mismatched-credential"
。
从版本 7 开始,有两种不同的错误代码可以检索,一种带有 .getException().getErrorCode()
(返回通用 ErrorCode
)和 .getException.getMessagingErrorCode()
(返回更合适的 MessagingErrorCode
).
migration guide to version 7 清楚地表明 "registration-token-not-registered"
的第一种情况现在可以用 .getException.getMessagingErrorCode()
处理并与 MessagingErrorCode.UNREGISTERED
匹配,但是 [=13= 的情况](以及所有其他可能的错误)未在任何地方记录。
我能找到的最好的东西是 documentation of the enum。
但我不确定
The credential used to authenticate this SDK does not have permission to send messages to the device corresponding to the provided registration token
(来自Admin Error codes documentation)和
The authenticated sender ID is different from the sender ID for the registration token.
(来自documentation of the enum MessagingErrorCode.SENDER_ID_MISMATCH
)意思相同...
我的问题是双重的:
- 有什么好的方法可以将
MessagingErrorCode
与实际的管理员错误代码联系起来吗?
MessagingErrorCode.SENDER_ID_MISMATCH
是 "mismatched-credential"
的正确错误代码吗?
将 MessagingErrorCode
与旧版管理错误代码相关
您引用的 Admin error code documentation 仅适用于今天的 Node.js SDK,它仍然停留在表示 API 错误的旧方法中。因此,如果您使用 Node.js 以外的语言进行编码(并使用最新的可用 Firebase SDK),请忽略那些遗留错误代码,只处理在提供的枚举中明确定义的错误代码。在许多情况下,这些旧错误代码和新错误代码之间没有直接 1:1 映射。
有关错误代码的大多数 up-to-date 信息,您应该参考 Admin SDK error handling。
mismatched-credential
错误代码
旧的 mismatched-credential
错误代码用于表示两个不同的错误条件:
- 实际令牌不匹配错误,调用者无权发送给给定设备令牌。
- 由于缺少所需的 IAM 授权凭据而导致的其他一般权限错误 roles/permissions。
新的 v7 Java SDK 区分了这两种情况。案例 1 表示为 MessagingErrorCode.SENDER_ID_MISMATCH
.
SENDER_ID_MISMATCH The authenticated sender ID is different from the sender ID for the registration token. This usually means the sender and the target registration token are not in the same Firebase project.
情况 2 导致 ErrorCode.PERMISSION_DENIED
没有 MessagingErrorCode
值。
PERMISSION_DENIED Client does not have sufficient permission. This can happen because the OAuth token does not have the right scopes, the client does not have permission, or the API has not been enabled for the client project.
大多数开发人员只想在他们的代码中处理案例 1。情况 2 几乎总是配置错误。
这是关于从 Firebase 客户端版本 6 到 7 的迁移。
过去,我们在 com.google.firebase.messaging.SendResponse
的实例上调用了 .getException().getErrorCode()
。
我们具体处理了两个案例,"registration-token-not-registered"
和"mismatched-credential"
。
从版本 7 开始,有两种不同的错误代码可以检索,一种带有 .getException().getErrorCode()
(返回通用 ErrorCode
)和 .getException.getMessagingErrorCode()
(返回更合适的 MessagingErrorCode
).
migration guide to version 7 清楚地表明 "registration-token-not-registered"
的第一种情况现在可以用 .getException.getMessagingErrorCode()
处理并与 MessagingErrorCode.UNREGISTERED
匹配,但是 [=13= 的情况](以及所有其他可能的错误)未在任何地方记录。
我能找到的最好的东西是 documentation of the enum。
但我不确定
The credential used to authenticate this SDK does not have permission to send messages to the device corresponding to the provided registration token
(来自Admin Error codes documentation)和
The authenticated sender ID is different from the sender ID for the registration token.
(来自documentation of the enum MessagingErrorCode.SENDER_ID_MISMATCH
)意思相同...
我的问题是双重的:
- 有什么好的方法可以将
MessagingErrorCode
与实际的管理员错误代码联系起来吗? MessagingErrorCode.SENDER_ID_MISMATCH
是"mismatched-credential"
的正确错误代码吗?
将 MessagingErrorCode
与旧版管理错误代码相关
您引用的 Admin error code documentation 仅适用于今天的 Node.js SDK,它仍然停留在表示 API 错误的旧方法中。因此,如果您使用 Node.js 以外的语言进行编码(并使用最新的可用 Firebase SDK),请忽略那些遗留错误代码,只处理在提供的枚举中明确定义的错误代码。在许多情况下,这些旧错误代码和新错误代码之间没有直接 1:1 映射。
有关错误代码的大多数 up-to-date 信息,您应该参考 Admin SDK error handling。
mismatched-credential
错误代码
旧的 mismatched-credential
错误代码用于表示两个不同的错误条件:
- 实际令牌不匹配错误,调用者无权发送给给定设备令牌。
- 由于缺少所需的 IAM 授权凭据而导致的其他一般权限错误 roles/permissions。
新的 v7 Java SDK 区分了这两种情况。案例 1 表示为 MessagingErrorCode.SENDER_ID_MISMATCH
.
SENDER_ID_MISMATCH The authenticated sender ID is different from the sender ID for the registration token. This usually means the sender and the target registration token are not in the same Firebase project.
情况 2 导致 ErrorCode.PERMISSION_DENIED
没有 MessagingErrorCode
值。
PERMISSION_DENIED Client does not have sufficient permission. This can happen because the OAuth token does not have the right scopes, the client does not have permission, or the API has not been enabled for the client project.
大多数开发人员只想在他们的代码中处理案例 1。情况 2 几乎总是配置错误。