کدهای خطای REST برای HTTP v1 API
پاسخهای خطای HTTP برای HTTP v1 API شامل کد خطا، پیام خطا، و وضعیت خطا است. همچنین ممکن است حاوی آرایهای details با جزئیات بیشتر درباره خطا باشد.
در اینجا دو پاسخ خطای نمونه آورده شده است:
مثال ۱: پاسخ خطا از درخواست HTTP v1 API با مقدار نامعتبر در پیام داده
{
"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"
}
]
}
]
}
}
مثال ۲: پاسخ خطا از درخواست HTTP v1 API با کد ثبت نام نامعتبر
{
"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"
}
]
}
}
توجه داشته باشید که هر دو پیام کد و وضعیت یکسانی دارند، اما آرایه جزئیات
مقادیر را در انواع مختلف دارد. مثال اول نوع
type.googleapis.com/google.rpc.BadRequest را دارد که نشاندهنده خطا در مقادیر
درخواست است. مثال دوم با نوع
type.googleapis.com/google.firebase.fcm.v1.FcmError خطای خاص FCM دارد.
برای بسیاری از خطاها، آرایه جزئیات حاوی اطلاعاتی است که برای اشکالزدایی و یافتن راهحل به آن نیاز دارید.
جدول زیر کدهای خطای FCM v1 REST API و توضیحات آنها را فهرست میکند.
| کد خطا | شرح و مراحل حلوفصل |
|---|---|
UNSPECIFIED_ERROR اطلاعات بیشتری درباره این خطا دردسترس نیست. |
هیچکدام. |
INVALID_ARGUMENT (کد خطای HTTP = 400) پارامترهای درخواست نامعتبر بودند. افزونهای از نوع google.rpc.BadRequest برگردانده میشود تا مشخص کند کدام فیلد نامعتبر بوده است. |
دلایل احتمالی شامل ثبت نام نامعتبر، نام بسته نامعتبر، پیام خیلی بزرگ، کلید داده نامعتبر، TTL نامعتبر، یا دیگر پارامترهای نامعتبر است. ثبت نام نامعتبر: قالب کد ثبت نامی که به سرور ارسال میکنید را بررسی کنید. مطمئن شوید که با کد ثبت دریافتی برنامه کارخواه از ثبت در FCM مطابقت داشته باشد. نشان را کوتاه نکنید یا نویسههای اضافی اضافه نکنید. نام بسته نامعتبر است: مطمئن شوید پیام به نشانی یک کد ثبت ارسال شده است که نام بستهاش با مقدار ارسالشده در درخواست مطابقت دارد. پیام خیلی بزرگ است: بررسی کنید که اندازه کل دادههای پایهبار موجود در پیام از محدودیتهای FCM فراتر نرود: ۴۰۹۶ بایت برای اکثر پیامها، یا ۲۰۴۸ بایت در پیامهای مربوط به موضوعات. این شامل هم کلیدها و هم مقادیر میشود. کلید داده نامعتبر: بررسی کنید که دادههای پیامواره حاوی کلیدی (مثل from، gcm، یا هر مقدار پیشوندی با google) که FCM بهصورت داخلی استفاده میکند نباشد. توجه داشته باشید که برخیاز کلمات (مثل collapse_key) توسط FCM نیز استفاده میشوند اما در بار مفید مجاز هستند، در این صورت مقدار بار مفید با مقدار FCM ملغی میشود. زمان بقای نامعتبر: بررسی کنید که مقدار استفادهشده در زمان بقا یک عدد صحیح باشد که نشاندهنده مدت زمان برحسب ثانیه بین ۰ و ۲٬۴۱۹٬۲۰۰ (۴ هفته) است. پارامترهای نامعتبر: بررسی کنید که پارامترهای ارائهشده نام و نوع صحیح را داشته باشند. |
UNREGISTERED (کد خطای HTTP = 404) نمونه برنامه از FCM لغو ثبت شد. این معمولاً به این معنی است که نمودارافزار استفادهشده دیگر معتبر نیست و باید از نمودارافزار جدیدی استفاده شود. |
این خطا میتواند بهدلیل نبودن نشانهای ثبت یا نشانهای ثبتنشده باشد. ثبتنام وجود ندارد: اگر هدف پیام مقدار token باشد، بررسی کنید که درخواست حاوی کد ثبتنام باشد.ثبتنشده: در چند سناریو ممکن است یک کد ثبت موجود دیگر معتبر نباشد، ازجمله: - اگر برنامه کارخواه از FCM لغو ثبت کند. - اگر برنامه مشتری بهطور خودکار ثبتنامش لغو شود، که میتواند درصورتیکه کاربر برنامه را حذف نصب کند اتفاق بیفتد. برای مثال، در iOS، اگر «سرویس بازخورد APNs» نشان APNs را بهعنوان نامعتبر گزارش کند. - اگر کد ثبت منقضی شود (برای مثال، Google ممکن است تصمیم بگیرد کد ثبت را بازآوری کند، یا کد APNs برای دستگاههای iOS منقضی شده باشد). - اگر برنامه مشتری بهروز شده باشد اما نسخه جدید برای دریافت پیام پیکربندی نشده باشد. برای همه این موارد، این کد ثبت را از سرور برنامه بردارید و از آن برای ارسال پیام استفاده نکنید. |
SENDER_ID_MISMATCH (کد خطای HTTP = 403) شناسه فرستنده اصیل با شناسه فرستنده برای کد ثبت متفاوت است. |
رمز ثبت به گروه خاصی از فرستندگان مرتبط است. وقتی برنامه مشتری برای FCM ثبت میشود، باید مشخص کند کدام فرستندگان اجازه دارند پیام ارسال کنند. هنگام ارسال پیام به برنامه مشتری، باید از یکی از آن شناسههای فرستنده استفاده کنید. اگر به فرستنده دیگری تغییر دهید، نشانهای ثبت موجود کار نخواهند کرد. |
QUOTA_EXCEEDED (کد خطای HTTP = 429) از حد ارسال برای هدف پیام فراتر رفته است. افزونهای از نوع google.rpc.QuotaFailure برگردانده میشود تا مشخص کند از کدام سهمیه فراتر رفتهاید. |
این خطا میتواند ناشی از فراتر رفتن از سهمیه نرخ پیام، فراتر رفتن از سهمیه نرخ پیام دستگاه، یا فراتر رفتن از سهمیه نرخ پیام موضوع باشد. نرخ پیام از حد مجاز فراتر رفته است: نرخ ارسال پیام بسیار بالا است. باید نرخ کلی ارسال پیام را کاهش دهید. برای تلاش مجدد برای پیامهای ردشده، از پسرفت نمایی با حداقل تأخیر اولیه ۱ دقیقه استفاده کنید. نرخ پیام دستگاه از حد مجاز فراتر رفته است: نرخ پیامهای ارسالی به دستگاهی خاص بسیار بالا است. محدودیت نرخ پیام به یک دستگاهرا ببینید. تعداد پیامهای ارسالی به این دستگاه را کاهش دهید و از «پسرفت نمایی» برای تلاش مجدد برای ارسال استفاده کنید. نرخ پیام موضوع از حد مجاز فراتر رفته است: نرخ پیامهای ارسالی به مشترکین یک موضوع خاص بسیار بالا است. تعداد پیامهای ارسالی برای این موضوع را کاهش دهید و از پسگیری نمایی با حداقل تأخیر اولیه ۱ دقیقه برای تلاش مجدد برای ارسال استفاده کنید. |
UNAVAILABLE (کد خطای HTTP = 503) سرور اضافهبار دارد. |
سرور نتوانست درخواست را بهموقع پردازش کند. همان درخواست را دوباره امتحان کنید، اما باید: - اگر سرایند «تلاش مجدد پساز» در پاسخ «سرور اتصال FCM» گنجانده شده است، آن را رعایت کنید. - عقبگرد نمایی را در سازوکار تلاش مجدد پیادهسازی کنید. (برای مثال، اگر یک ثانیه قبلاز اولین تلاش مجدد صبر کردید، حداقل دو ثانیه قبلاز تلاش مجدد بعدی صبر کنید، سپس ۴ ثانیه و به همین ترتیب). اگر چندین پیام ارسال میکنید، لرزش را درنظر بگیرید. برای اطلاعات بیشتر، مدیریت تلاشهای مجددرا ببینید، یا داشبورد وضعیت FCM را بررسی کنید تا مشخص کنید آیا تداخلی در سرویس درحال انجام وجود دارد که بر FCM تأثیر بگذارد. فرستندگانی که باعث ایجاد مشکل میشوند درمعرض خطر قرار گرفتن در فهرست غیرمجاز قرار دارند. |
INTERNAL (کد خطای HTTP = 500) خطای داخلی ناشناختهای رخ داد. |
سرور هنگام پردازش درخواست با خطا مواجه شد. میتوانید درخواست یکسانی را با دنبال کردن پیشنهادهای مدیریت تلاشهای مجدد یا بررسی داشبورد وضعیت FCM دوباره امتحان کنید. برای شناسایی اینکه آیا اختلالات سرویس جاری وجود دارد که بر FCM تأثیر بگذارد. اگر خطا ادامه داشت، لطفاً با پشتیبانی Firebase تماس بگیرید. |
THIRD_PARTY_AUTH_ERROR گواهینامه APNs یا کلید اصالتسنجی پیامرسانی تحت وب نامعتبر یا موجود نیست (کد خطای HTTP = 401). |
پیامی که دستگاه iOS یا ثبت فشار وب را هدفیابی کرده است ارسال نشد. اعتبار اطلاعات اعتباری توسعه و تولید خود را بررسی کنید. |
کدهای خطای «سرپرست SDK»
جدول زیر فهرست کدهای خطای FCM API «سرپرست Firebase» و شرح آنها را، ازجمله مراحل پیشنهادی برای حلوفصل کردن، ارائه میدهد.
| کد خطا | شرح و مراحل حلوفصل |
|---|---|
messaging/invalid-argument |
متغیر مستقلی نامعتبر به روش FCM ارائه شده است. پیام خطا باید حاوی اطلاعات اضافی باشد. |
messaging/invalid-recipient |
گیرنده پیام موردنظر نامعتبر است. پیام خطا باید حاوی اطلاعات اضافی باشد. |
messaging/invalid-payload |
شیء محتوای پیام نامعتبری ارائه شد. پیام خطا باید حاوی اطلاعات اضافی باشد. |
messaging/invalid-data-payload-key |
بار پیام داده حاوی کلید نامعتبر است. برای کلیدهای محدودشده،
به اسناد مرجع
DataMessagePayload مراجعه کنید.
|
messaging/payload-size-limit-exceeded |
پایهبار پیام ارائهشده از حد مجاز FCM بیشتر است. حداکثر اندازه برای اکثر پیامها ۴۰۹۶ بایت است. برای پیامهای ارسالشده به موضوعات، حدمجاز ۲۰۴۸ بایت است. اندازه کل بار شامل هر دو کلید و مقدار است. |
messaging/invalid-options |
شیء گزینههای پیام نامعتبری ارائه شده است. پیام خطا باید حاوی اطلاعات اضافی باشد. |
messaging/invalid-registration-token |
کد ثبت نامعتبر ارائه شد. مطمئن شوید که با رمز ثبت نامی که برنامه مشتری از ثبت نام در FCM دریافت میکند مطابقت داشته باشد. آن را کوتاه نکنید یا نویسههای اضافی به آن اضافه نکنید. |
messaging/registration-token-not-registered |
کد ثبت ارائهشده ثبت نشده است. یک کد ثبت معتبر قبلی میتواند به دلایل مختلفی لغو ثبت شود، ازجمله:
|
messaging/invalid-package-name |
پیام به نشانی کد ثبتنامی ارسال شده است که نام بسته آن با گزینه ارائهشده
restrictedPackageName مطابقت ندارد.
|
messaging/message-rate-exceeded |
نرخ ارسال پیام به یک هدف خاص بسیار بالا است. تعداد پیامهای ارسالی به این دستگاه یا موضوع را کاهش دهید و بلافاصله ارسال به این هدف را دوباره امتحان نکنید. |
messaging/device-message-rate-exceeded |
نرخ ارسال پیام به دستگاهی خاص بسیار بالا است. تعداد پیامهای ارسالشده به این دستگاه را کاهش دهید و بلافاصله برای ارسال به این دستگاه دوباره تلاش نکنید. |
messaging/topics-message-rate-exceeded |
نرخ ارسال پیام به مشترکین یک موضوع خاص بسیار بالا است. تعداد پیامهای ارسالی برای آن موضوع را کاهش دهید و بلافاصله ارسال به آن موضوع را دوباره امتحان نکنید. |
messaging/topics-subscription-rate-exceeded |
نرخ درخواستهای مدیریت اشتراک برای یک موضوع خاص بسیار بالا است. تعداد درخواستهای ارسالشده برای آن موضوع را کاهش دهید و بلافاصله درخواست را دوباره امتحان نکنید. |
messaging/too-many-topics |
یک کد ثبت به حداکثر تعداد موضوعات مشترک شده است و نمیتواند به موضوع دیگری مشترک شود. |
messaging/invalid-apns-credentials |
پیامی که دستگاه Apple را هدفیابی کرده است ارسال نشد زیرا گواهینامه SSL موردنیاز APNs بارگذاری نشده است یا منقضی شده است. اعتبار گواهینامههای توسعه و تولید خود را بررسی کنید. |
messaging/mismatched-credential |
اطلاعات اعتباری استفادهشده برای اصالتسنجی این کیت توسعه نرمافزار اجازه ندارد به دستگاه مربوط به کد ثبت ارائهشده پیام ارسال کند. مطمئن شوید هم اطلاعات اعتباری و هم کد ثبت متعلق به یک پروژه Firebase باشند. برای دریافت اسناد مربوط به نحوه اصالتسنجی Firebase Admin SDK، افزودن Firebase به برنامه را ببینید. |
messaging/authentication-error |
«کیت توسعه نرمافزار» نتوانست در سرورهای FCM اصالتسنجی کند. مطمئن شوید Firebase Admin SDK را با اطلاعات اعتباری که اجازههای لازم برای ارسال پیامهای FCM را دارد اصالتسنجی کنید. برای دریافت اسناد مربوط به نحوه اصالتسنجی Firebase Admin SDK، افزودن Firebase به برنامه را ببینید. |
messaging/server-unavailable |
سرور FCM نتوانست درخواست را بهموقع پردازش کند. باید
همان درخواست را دوباره امتحان کنید، اما باید:
|
messaging/internal-error |
سرور FCM هنگام پردازش درخواست با خطا مواجه شد. میتوانید همان درخواست را با رعایت الزامات
ذکرشده در ردیف messaging/server-unavailable قبلی دوباره ارسال کنید. اگر خطا برطرف نشد، لطفاً مشکل را به کانال پشتیبانی گزارش اشکال ما گزارش دهید.
|
messaging/unknown-error |
خطای ناشناختهای از سرور برگردانده شد. برای جزئیات بیشتر، پاسخ سرور خام را در پیام خطا ببینید. اگر این خطا را دریافت کردید، لطفاً پیام خطای کامل را به کانال پشتیبانی گزارش اشکال ما گزارش کنید. |