Mã lỗi REST cho HTTP API phiên bản 1
Phản hồi lỗi HTTP cho HTTP API phiên bản 1 chứa mã lỗi, thông báo lỗi và trạng thái lỗi. Chúng cũng có thể chứa một mảng details
với nhiều thông tin chi tiết hơn về lỗi.
Sau đây là 2 phản hồi lỗi mẫu:
Ví dụ 1: Phản hồi lỗi từ một yêu cầu API HTTP phiên bản 1 có giá trị không hợp lệ trong một thông báo dữ liệu
{
"error": {
"code": 400,
"message": "Invalid value at 'message.data[0].value' (TYPE_STRING), 12",
"status": "INVALID_ARGUMENT",
"details": [
{
"@type": "type.googleapis.com/google.rpc.BadRequest",
"fieldViolations": [
{
"field": "message.data[0].value",
"description": "Invalid value at 'message.data[0].value' (TYPE_STRING), 12"
}
]
}
]
}
}
Ví dụ 2: Phản hồi lỗi từ một yêu cầu API HTTP phiên bản 1 có mã thông báo đăng ký không hợp lệ
{
"error": {
"code": 400,
"message": "The registration token is not a valid FCM registration token",
"status": "INVALID_ARGUMENT",
"details": [
{
"@type": "type.googleapis.com/google.firebase.fcm.v1.FcmError",
"errorCode": "INVALID_ARGUMENT"
}
]
}
}
Xin lưu ý rằng cả hai thông báo đều có cùng mã và trạng thái, nhưng mảng chi tiết chứa các giá trị thuộc nhiều loại. Ví dụ đầu tiên có loại type.googleapis.com/google.rpc.BadRequest
cho biết lỗi trong các giá trị yêu cầu. Ví dụ thứ hai có loại type.googleapis.com/google.firebase.fcm.v1.FcmError
có một lỗi cụ thể của FCM.
Đối với nhiều lỗi, mảng chi tiết chứa thông tin bạn cần để gỡ lỗi và tìm ra giải pháp.
Bảng sau đây liệt kê mã lỗi của FCM v1 REST API và nội dung mô tả của các mã lỗi đó.
Mã lỗi | Nội dung mô tả và các bước giải quyết |
---|---|
UNSPECIFIED_ERROR Không có thêm thông tin nào về lỗi này. |
Không có. |
INVALID_ARGUMENT (Mã lỗi HTTP = 400) Các tham số yêu cầu không hợp lệ. Một tiện ích thuộc loại google.rpc.BadRequest được trả về để chỉ định trường không hợp lệ. |
Các nguyên nhân có thể xảy ra bao gồm đăng ký không hợp lệ, tên gói không hợp lệ, thông báo quá lớn, khoá dữ liệu không hợp lệ, TTL không hợp lệ hoặc các tham số không hợp lệ khác. Đăng ký không hợp lệ: Kiểm tra định dạng của mã thông báo đăng ký mà bạn truyền đến máy chủ. Đảm bảo mã này khớp với mã thông báo đăng ký mà ứng dụng khách nhận được khi đăng ký với FCM. Đừng cắt ngắn mã thông báo hoặc thêm ký tự bổ sung. Tên gói không hợp lệ: Đảm bảo rằng thông báo được gửi đến một mã thông báo đăng ký có tên gói khớp với giá trị được truyền trong yêu cầu. Thông báo quá lớn: Kiểm tra để đảm bảo tổng kích thước của dữ liệu tải trọng có trong một thông báo không vượt quá giới hạn của FCM: 4096 byte đối với hầu hết các thông báo hoặc 2048 byte trong trường hợp thông báo gửi đến các chủ đề. Điều này bao gồm cả khoá và giá trị. Khoá dữ liệu không hợp lệ: Kiểm tra để đảm bảo dữ liệu tải trọng không chứa khoá (chẳng hạn như from, hoặc gcm, hoặc bất kỳ giá trị nào có tiền tố là google) mà FCM sử dụng nội bộ. Xin lưu ý rằng một số từ (chẳng hạn như collapse_key) cũng được FCM sử dụng nhưng được phép có trong tải trọng. Trong trường hợp này, giá trị tải trọng sẽ bị giá trị FCM ghi đè. TTL không hợp lệ: Kiểm tra để đảm bảo giá trị được dùng trong ttl là một số nguyên biểu thị thời lượng tính bằng giây trong khoảng từ 0 đến 2.419.200 (4 tuần). Tham số không hợp lệ: Kiểm tra để đảm bảo rằng các tham số bạn cung cấp có tên và loại phù hợp. |
UNREGISTERED (Mã lỗi HTTP = 404) Phiên bản ứng dụng đã bị huỷ đăng ký khỏi FCM. Điều này thường có nghĩa là mã thông báo được dùng không còn hợp lệ và bạn phải dùng một mã thông báo mới. |
Lỗi này có thể xảy ra do thiếu mã thông báo đăng ký hoặc mã thông báo chưa đăng ký. Thiếu thông tin đăng ký: Nếu đích đến của thông báo là giá trị token , hãy kiểm tra để đảm bảo rằng yêu cầu có chứa mã thông báo đăng ký.Chưa đăng ký: Mã thông báo đăng ký hiện có có thể không còn hợp lệ trong một số trường hợp, bao gồm: – Nếu ứng dụng khách huỷ đăng ký với FCM. – Nếu ứng dụng khách tự động huỷ đăng ký, điều này có thể xảy ra nếu người dùng gỡ cài đặt ứng dụng. Ví dụ: trên iOS, nếu Dịch vụ phản hồi APNs báo cáo mã thông báo APNs là không hợp lệ. – Nếu mã thông báo đăng ký hết hạn (ví dụ: Google có thể quyết định làm mới mã thông báo đăng ký hoặc mã thông báo APNs đã hết hạn đối với thiết bị iOS). – Nếu ứng dụng khách được cập nhật nhưng phiên bản mới không được định cấu hình để nhận tin nhắn. Trong tất cả các trường hợp này, hãy xoá mã thông báo đăng ký này khỏi máy chủ ứng dụng và ngừng sử dụng mã thông báo này để gửi thông báo. |
SENDER_ID_MISMATCH (Mã lỗi HTTP = 403) Mã nhận dạng người gửi đã xác thực khác với mã nhận dạng người gửi cho mã thông báo đăng ký. |
Mã đăng ký được liên kết với một nhóm người gửi nhất định. Khi đăng ký FCM, ứng dụng khách phải chỉ định những người gửi được phép gửi thông báo. Bạn nên sử dụng một trong những mã nhận dạng người gửi đó khi gửi thông báo đến ứng dụng khách. Nếu bạn chuyển sang một người gửi khác, thì các mã thông báo đăng ký hiện có sẽ không hoạt động. |
QUOTA_EXCEEDED (Mã lỗi HTTP = 429) Đã vượt quá giới hạn gửi cho mục tiêu của thông báo. Một tiện ích thuộc loại google.rpc.QuotaFailure được trả về để chỉ định hạn mức nào đã vượt quá. |
Lỗi này có thể xảy ra do bạn vượt quá hạn mức tốc độ gửi thông báo, hạn mức tốc độ gửi thông báo của thiết bị hoặc hạn mức tốc độ gửi thông báo của chủ đề. Vượt quá tốc độ gửi thư: Tốc độ gửi thư quá cao. Bạn phải giảm tốc độ tổng thể khi gửi tin nhắn. Sử dụng thuật toán đợi luỹ tuyến với độ trễ ban đầu tối thiểu là 1 phút để thử lại các thông báo bị từ chối. Đã vượt quá tốc độ gửi tin nhắn đến thiết bị: Tốc độ gửi tin nhắn đến một thiết bị cụ thể quá cao. Xem giới hạn về số lượng tin nhắn gửi đến một thiết bị. Giảm số lượng thông báo được gửi đến thiết bị này và sử dụng thuật toán thời gian đợi luỹ thừa để thử lại việc gửi. Vượt quá tốc độ gửi thư theo chủ đề: Tốc độ gửi thư cho người đăng ký theo một chủ đề cụ thể quá cao. Giảm số lượng thông báo được gửi cho chủ đề này và sử dụng thời gian đợi luỹ thừa với độ trễ ban đầu tối thiểu là 1 phút để thử lại việc gửi. |
UNAVAILABLE (Mã lỗi HTTP = 503) Máy chủ bị quá tải. |
Máy chủ không xử lý được yêu cầu đúng hạn. Thử lại cùng một yêu cầu, nhưng bạn phải: – Tuân thủ tiêu đề Retry-After nếu tiêu đề này có trong phản hồi từ Máy chủ kết nối FCM. – Triển khai thuật toán đợi luỹ tiến trong cơ chế thử lại. (ví dụ: nếu bạn đợi một giây trước lần thử lại đầu tiên, hãy đợi ít nhất hai giây trước lần thử lại tiếp theo, sau đó là 4 giây, v.v.). Nếu bạn gửi nhiều thông báo, hãy cân nhắc việc áp dụng phương pháp làm trễ. Để biết thêm thông tin, hãy xem phần Xử lý các lần thử lạihoặc kiểm tra trang tổng quan về trạng thái của FCM để xác định xem có dịch vụ nào đang bị gián đoạn ảnh hưởng đến FCM hay không. Những người gửi gây ra vấn đề có nguy cơ bị đưa vào danh sách từ chối. |
INTERNAL (Mã lỗi HTTP = 500) Đã xảy ra lỗi nội bộ không xác định. |
Máy chủ đã gặp lỗi khi cố gắng xử lý yêu cầu. Bạn có thể thử lại cùng một yêu cầu theo các đề xuất trong phần Xử lý các lần thử lại hoặc kiểm tra trang tổng quan về trạng thái FCM. để xác định xem có dịch vụ nào đang bị gián đoạn ảnh hưởng đến FCM hay không. Nếu lỗi này vẫn tiếp diễn, vui lòng liên hệ với nhóm hỗ trợ của Firebase. |
THIRD_PARTY_AUTH_ERROR (Mã lỗi HTTP = 401) Chứng chỉ APNs hoặc khoá uỷ quyền thông báo đẩy trên web không hợp lệ hoặc bị thiếu. |
Không thể gửi thông báo nhắm đến một thiết bị iOS hoặc một lượt đăng ký thông báo đẩy trên web. Kiểm tra tính hợp lệ của thông tin đăng nhập phát triển và phát hành công khai. |
Mã lỗi Admin SDK
Bảng sau đây liệt kê các mã lỗi của Firebase Admin FCM API và nội dung mô tả của các mã lỗi đó, bao gồm cả các bước giải quyết được đề xuất.
Mã lỗi | Nội dung mô tả và các bước giải quyết |
---|---|
messaging/invalid-argument |
Một đối số không hợp lệ đã được cung cấp cho phương thức FCM. Thông báo lỗi phải chứa thông tin bổ sung. |
messaging/invalid-recipient |
Người nhận tin nhắn dự kiến không hợp lệ. Thông báo lỗi phải chứa thông tin bổ sung. |
messaging/invalid-payload |
Bạn đã cung cấp một đối tượng tải trọng thông báo không hợp lệ. Thông báo lỗi phải chứa thông tin bổ sung. |
messaging/invalid-data-payload-key |
Tải trọng của thông báo dữ liệu chứa một khoá không hợp lệ. Hãy xem tài liệu tham khảo về
DataMessagePayload để biết các khoá bị hạn chế.
|
messaging/payload-size-limit-exceeded |
Tải trọng thông báo được cung cấp vượt quá giới hạn kích thước FCM. Giới hạn là 4096 byte đối với hầu hết các thông báo. Đối với tin nhắn được gửi đến các chủ đề, giới hạn là 2048 byte. Tổng kích thước tải trọng bao gồm cả khoá và giá trị. |
messaging/invalid-options |
Bạn đã cung cấp một đối tượng tuỳ chọn tin nhắn không hợp lệ. Thông báo lỗi phải chứa thông tin bổ sung. |
messaging/invalid-registration-token |
Mã thông báo đăng ký được cung cấp không hợp lệ. Đảm bảo rằng mã này khớp với mã thông báo đăng ký mà ứng dụng khách nhận được khi đăng ký bằng FCM. Đừng cắt bớt hoặc thêm ký tự vào tên này. |
messaging/registration-token-not-registered |
Mã thông báo đăng ký bạn cung cấp chưa được đăng ký. Một mã thông báo đăng ký hợp lệ trước đó có thể bị huỷ đăng ký vì nhiều lý do, bao gồm:
|
messaging/invalid-package-name |
Thông báo được gửi đến một mã thông báo đăng ký có tên gói không khớp với lựa chọn
restrictedPackageName được cung cấp.
|
messaging/message-rate-exceeded |
Tỷ lệ gửi thư đến một mục tiêu cụ thể quá cao. Giảm số lượng tin nhắn được gửi đến thiết bị hoặc chủ đề này và không thử lại ngay việc gửi đến mục tiêu này. |
messaging/device-message-rate-exceeded |
Tốc độ gửi thông báo đến một thiết bị cụ thể quá cao. Giảm số lượng tin nhắn gửi đến thiết bị này và không thử lại ngay việc gửi đến thiết bị này. |
messaging/topics-message-rate-exceeded |
Tỷ lệ gửi thư cho người đăng ký về một chủ đề cụ thể quá cao. Giảm số lượng thông báo được gửi cho chủ đề đó và không thử lại ngay việc gửi đến chủ đề đó. |
messaging/too-many-topics |
Một mã thông báo đăng ký đã đăng ký tối đa số lượng chủ đề và không thể đăng ký thêm. |
messaging/invalid-apns-credentials |
Không thể gửi một thông báo nhắm đến thiết bị Apple vì bạn chưa tải chứng chỉ SSL APNs bắt buộc lên hoặc chứng chỉ đó đã hết hạn. Kiểm tra tính hợp lệ của chứng chỉ phát triển và chứng chỉ phát hành công khai. |
messaging/mismatched-credential |
Thông tin xác thực dùng để xác thực SDK này không có quyền gửi thông báo đến thiết bị tương ứng với mã thông báo đăng ký đã cung cấp. Đảm bảo cả thông tin đăng nhập và mã thông báo đăng ký đều thuộc cùng một dự án Firebase. Hãy xem phần Thêm Firebase vào ứng dụng để biết tài liệu về cách xác thực Firebase Admin SDK. |
messaging/authentication-error |
SDK không thể xác thực với các máy chủ FCM. Đảm bảo rằng bạn xác thực Firebase Admin SDK bằng thông tin đăng nhập có các quyền thích hợp để gửi thông báo FCM. Hãy xem phần Thêm Firebase vào ứng dụng để biết tài liệu về cách xác thực Firebase Admin SDK. |
messaging/server-unavailable |
Máy chủ FCM không xử lý được yêu cầu đúng hạn. Bạn nên thử lại yêu cầu tương tự, nhưng phải:
|
messaging/internal-error |
Máy chủ FCM đã gặp lỗi khi cố gắng xử lý yêu cầu. Bạn có thể thử lại yêu cầu tương tự theo các yêu cầu được liệt kê trong hàng messaging/server-unavailable trước đó. Nếu lỗi vẫn tiếp diễn, vui lòng báo cáo vấn đề này cho kênh hỗ trợ Báo cáo lỗi của chúng tôi.
|
messaging/unknown-error |
Đã xảy ra lỗi máy chủ không xác định. Xem phản hồi thô của máy chủ trong thông báo lỗi để biết thêm thông tin chi tiết. Nếu bạn gặp lỗi này, vui lòng báo cáo toàn bộ thông báo lỗi cho kênh hỗ trợ Báo cáo lỗi của chúng tôi. |