کدهای خطا
همهی کدهای خطایی که Abrova Auth برمیگرداند، همراه HTTP status، معنای هر کدام و کاری که اپ شما باید انجام دهد؛ بهعلاوهی کدهایی که خود SDKها اضافه میکنند (خطای شبکه، پیکربندینشده، لغوشده).
هر فراخوانیِ ناموفق یک code ثابت دارد. پیامهایی که به کاربران نشان میدهید را بر اساس همین کد و به زبان خودشان بسازید. message همراه آن یک راهنمای انگلیسی برای توسعهدهنده است: هرگز کلید محرمانه یا آدرس ایمیل ندارد و ممکن است تغییر کند.
خطاها چطور میرسند#
| SDK | نوع خطا | فیلد کد |
|---|---|---|
| Flutter | AbrovaAuthException (برای وصل کردن: AbrovaProviderAlreadyLinkedException) | code، با AbrovaAuthErrorCode مقایسه کنید |
| iOS | AbrovaAuthError | code، مثلاً .invalidCredentials |
| Android | AbrovaAuthException | code، با AbrovaAuthErrorCode مقایسه کنید |
| Web، React Native | AbrovaAuthError (با isAbrovaAuthError بررسی کنید) | code، مثلاً 'INVALID_CREDENTIALS' |
با عبور از سقف درخواست، خطا مدت انتظار را هم دارد: retryAfterSec (iOS، Android، Web، React Native) یا retryAfter (Flutter).
کدهای Abrova Auth#
| کد | HTTP | معنا | چه باید کرد |
|---|---|---|---|
| INVALID_INPUT | 400 | یک فیلد نیست یا قالبش درست نیست: ایمیل، قالب شماره تلفن، nonce کوتاهتر از ۱۶ کاراکتر، یا redirectUrl که جزو آدرسهای لینک شما نیست. | درخواست را اصلاح کنید. ممکن است شیء fields نام فیلد را بگوید. |
| INVALID_API_KEY | 401 | کلید API ناشناخته است. | کلید عمومی را از Abrova Auth › راهاندازی بردارید. |
| PRODUCT_DISABLED | 403 | Abrova Auth برای پروژه روشن نیست. | آن را در تنظیمات › محصولات روشن کنید. |
| METHOD_DISABLED | 403 | این روش ورود برای پروژه خاموش است. | روشنش کنید، یا دکمه را پنهان کنید (از getMethods استفاده کنید). |
| NOT_CONFIGURED | 400 / 503 | روش روشن است اما راهاندازی نشده (شناسههای Apple یا Google نیست، ربات تلگرام نیست)، یا ارسال ایمیل در دسترس نیست (503). | راهاندازی را در کنسول کامل کنید. برای 503، بعداً دوباره امتحان کنید. |
| INVALID_CREDENTIALS | 401 | ایمیل یا رمز عبور اشتباه، یا کد تلگرام اشتباه یا منقضیشده. | از کاربر بخواهید بررسی کند و دوباره امتحان کند. |
| EMAIL_TAKEN | 409 | کاربر دیگری این ایمیل را دارد. | ورود یا بازیابی رمز عبور را پیشنهاد دهید. |
| EMAIL_NOT_VERIFIED | 403 | پروژه ایمیل تأییدشده میخواهد و این ایمیل تأیید نشده است. | از کاربر بخواهید ایمیل تأیید را باز کند؛ ارسال دوباره را پیشنهاد دهید. |
| WEAK_PASSWORD | 400 | رمز عبور خیلی کوتاه، بلندتر از ۱۲۸ کاراکتر، یا خیلی رایج است. | رمز عبور بلندتر و کمرایجتری بخواهید. |
| INVALID_ID_TOKEN | 401 | ID token مربوط به Apple یا Google برای این پروژه معتبر نیست: شناسهی اپ اشتباه، منقضیشده، بیش از ۱۰ دقیقه عمر، یا nonce جور نیست. | شناسهها را در کنسول و نحوهی کار با nonce را بررسی کنید. |
| NONCE_REUSED | 401 | این nonce قبلاً برای یک ورود استفاده شده است. | برای هر ورود یک nonce جدید بسازید. |
| PROVIDER_ALREADY_LINKED | 409 | هنگام وصل کردن: حساب Apple یا Google متعلق به کاربر دیگری است. | به جای آن، ورود به همان حساب را پیشنهاد دهید. |
| TOKEN_INVALID | 400 / 401 | token لینک ایمیلی نامعتبر، استفادهشده یا منقضی است (400)، یا refresh token ناشناخته است (401). | لینک جدید بخواهید، یا دوباره وارد شوید. |
| SESSION_EXPIRED | 401 | نشست تمام شده است (۶۰ روز بدون استفاده، یا یک سال عمر). | SDK خارج میشود. از کاربر بخواهید وارد شود. |
| SESSION_REVOKED | 401 | نشست پایان داده شده است: خروج از همهجا، بازیابی رمز عبور، یا استفادهی دوباره از refresh token. | SDK خارج میشود. از کاربر بخواهید وارد شود. |
| USER_DISABLED | 403 | این کاربر را در کنسول غیرفعال کردهاید. | SDK خارج میشود. به کاربر بگویید حسابش غیرفعال است. |
| UNAUTHENTICATED | 401 | فراخوانی به کاربرِ واردشده نیاز دارد و کاربری وارد نشده (یا access token معتبر نیست). | اول وارد شوید. |
| RATE_LIMITED | 429 | تلاشهای بیش از حد، یا رسیدن به سقف روزانهی کاربران ناشناس جدید. | به اندازهی retryAfterSec صبر کنید و دوباره امتحان کنید. |
| MAU_LIMIT | 403 | ۱٬۰۰۰ کاربر فعال ماهانهی رایگان این ماه تمام شده، کیف پول موجودی کافی برای بیشتر از آن ندارد، و این کاربر در این ماه جدید است. | پیام دوستانهای نشان دهید. کیف پول را شارژ کنید تا کاربران جدید وارد شوند. |
| LIMIT_REACHED | 403 | یک قابلیت به موجودی کیف پول نیاز دارد (مثلاً API آمار استفاده). فراخوانیهای ورود این کد را برنمیگردانند. | کیف پول را شارژ کنید. |
| INTERNAL | 500 / 503 | مشکلی در سمت ابرووا پیش آمده است. | بعداً دوباره امتحان کنید. |
کدهایی که SDKها اضافه میکنند#
این کدها از SDK میآیند، نه از Abrova Auth: یا پاسخی نیامده، یا مشکل روی دستگاه است.
| کد | SDK | معنا |
|---|---|---|
| NETWORK_ERROR | همه | پاسخی نیامد (آفلاین، timeout). نشست حفظ میشود؛ دوباره امتحان کنید. |
| UNKNOWN | Flutter، Web، React Native | پاسخ قابل خواندن نبود. |
| INVALID_RESPONSE | iOS، Android | پاسخ قابل خواندن نبود. |
| SDK_NOT_CONFIGURED | iOS، Android | configure() پیش از آن صدا زده نشده است. |
| NOT_SIGNED_IN | iOS، Android | strictTokenProvider یا فراخوانیای که کاربرِ واردشده میخواهد، در حالی که کسی وارد نشده است. |
| CANCELED | iOS | کاربر صفحهی ورود با Apple را بست. |
خطاهایی که نشست را پایان میدهند#
وقتی تمدید نشست با SESSION_EXPIRED، SESSION_REVOKED، TOKEN_INVALID یا USER_DISABLED شکست بخورد، SDK نشست را از روی دستگاه پاک میکند و listener وضعیت ورود شما null میگیرد. همانجا کاربر را به صفحهی ورود ببرید. هر خطای دیگری، از جمله NETWORK_ERROR، نشست را حفظ میکند.