این صفحه، راهنمایی برای عیبیابی و پاسخ به سوالات متداول در مورد استفاده از Firebase Authentication را ارائه میدهد. اگر نمیتوانید آنچه را که به دنبالش هستید پیدا کنید یا به کمک بیشتری نیاز دارید، با پشتیبانی Firebase تماس بگیرید.
برای محافظت از پروژه خود در برابر افزایش ترافیک پیامکی و سوءاستفاده از API، مراحل زیر را انجام دهید:
تنظیم سیاست منطقه پیامکی را در نظر بگیرید
میزان استفاده از پیامک منطقهای خود را مشاهده کنید .
به دنبال مناطقی با تعداد بسیار زیاد پیامک ارسالی و تعداد بسیار کم (یا صفر) پیامک تأیید شده باشید. نسبت تأیید شده/ارسال شده، میزان موفقیت شماست. میزان موفقیت سالم معمولاً در محدوده ۷۰ تا ۸۵ درصد است زیرا پیامک یک پروتکل تحویل تضمین شده نیست و برخی از مناطق ممکن است مورد سوءاستفاده قرار گیرند. میزان موفقیت کمتر از ۵۰ درصد به معنای ارسال پیامک زیاد اما ورود موفق کم است که این یک شاخص رایج از بازیگران بد و پمپاژ ترافیک پیامکی است.
از سیاست منطقه پیامکی (SMS Region Policy) استفاده کنید تا یا مناطق پیامکی با نرخ موفقیت پایین را رد کنید، یا فقط در صورتی که برنامه شما فقط برای توزیع در بازارهای خاص در نظر گرفته شده است، به مناطق خاصی اجازه ارسال دهید.
دامنههای احراز هویت مجاز خود را محدود کنید
از داشبورد تنظیمات احراز هویت برای مدیریت دامنههای مجاز استفاده کنید. دامنه localhost به طور پیشفرض به دامنههای احراز هویت تأیید شده اضافه میشود تا توسعه سادهتر شود. حذف localhost از دامنههای مجاز در پروژه عملیاتی خود را در نظر بگیرید تا از اجرای کد توسط افراد خرابکار روی localhost خود برای دسترسی به پروژه عملیاتی شما جلوگیری شود.
فعال کردن و اجرای App Check
با فعال کردن App Check از پروژه خود در برابر سوءاستفاده از API محافظت کنید. این کار با تأیید اینکه درخواستها فقط از برنامههای مرتبط با پروژه شما ارسال میشوند، انجام میشود.
برای استفاده از App Check با Firebase Authentication ، باید Firebase Authentication with Identity Platform را ارتقا دهید.
به یاد داشته باشید که باید App Check برای Authentication در کنسول Firebase اعمال کنید (قبل از اعمال، نظارت بر ترافیک را در نظر بگیرید). همچنین، لیست سایتهای تأیید شده توسط reCAPTCHA Enterprise خود را دوباره بررسی کنید تا مطمئن شوید که فقط شامل سایتهای اصلی شما میشود و لیست برنامههای ثبت شده در پروژه شما در App Check دقیق است.
توجه داشته باشید که App Check با اعلام اینکه تماس از یکی از برنامههای ثبتشده شما میآید، به محافظت در برابر حملات خودکار کمک میکند. این ویژگی مانع از استفاده ناخواسته کاربران از برنامه شما نمیشود (برای مثال، شروع و عدم اتمام جریانهای ورود به سیستم برای تولید پیامکهای ارسالی).
در حال حاضر، شمارههایی که بین اپراتورها منتقل میشوند، منجر به غیرقابل تحویل شدن تمام پیامکها برای آن کاربران نهایی میشوند. هیچ راه حلی وجود ندارد و Firebase در حال کار بر روی این مشکل است.
اگر با خطای زیر مواجه شدید، مراحل عیبیابی موجود در این سوالات متداول را دنبال کنید:
GoogleFragment: Google sign in failed
com.google.android.gms.common.api.ApiException: 13: Unable to get token.
at
com.google.android.gms.internal.auth-api.zbay.getSignInCredentialFromIntent(com.google.android.gms:play-services-auth@@20.3.0:6)
مطمئن شوید که ورود به سیستم گوگل به عنوان یک ارائه دهنده احراز هویت به درستی فعال شده است:
در کنسول Firebase ، بخش Authentication را باز کنید.
در تب روش ورود ، روش ورود به سیستم گوگل را غیرفعال و سپس دوباره فعال کنید (حتی اگر از قبل فعال باشد):
روش ورود به سیستم گوگل را باز کنید، آن را غیرفعال کنید و سپس روی ذخیره کلیک کنید.
روش ورود به سیستم گوگل را دوباره باز کنید، آن را فعال کنید و سپس روی ذخیره کلیک کنید.
مطمئن شوید که برنامه شما از فایل پیکربندی بهروز Firebase خود (
google-services.json) استفاده میکند.
فایل پیکربندی برنامه خود را دریافت کنید.بررسی کنید که آیا هنوز خطا را دریافت میکنید یا خیر. اگر چنین است، به مرحله عیبیابی بعدی بروید.
مطمئن شوید که کلاینتهای OAuth 2.0 مورد نیاز، موجود هستند.
در صفحه Credentials کنسول Google Cloud ، به بخش OAuth 2.0 Client IDs نگاه کنید.
اگر کلاینتهای OAuth 2.0 وجود ندارند (و شما تمام مراحل عیبیابی بالا را انجام دادهاید)، با پشتیبانی تماس بگیرید .
اگر با خطای زیر مواجه شدید، مراحل عیبیابی موجود در این سوالات متداول را دنبال کنید:
You must specify |clientID| in |GIDConfiguration|
مطمئن شوید که ورود به سیستم گوگل به عنوان یک ارائه دهنده احراز هویت به درستی فعال شده است:
در کنسول Firebase ، بخش Authentication را باز کنید.
در تب روش ورود ، روش ورود به سیستم گوگل را غیرفعال و سپس دوباره فعال کنید (حتی اگر از قبل فعال باشد):
روش ورود به سیستم گوگل را باز کنید، آن را غیرفعال کنید و سپس روی ذخیره کلیک کنید.
روش ورود به سیستم گوگل را دوباره باز کنید، آن را فعال کنید و سپس روی ذخیره کلیک کنید.
مطمئن شوید که برنامه شما از فایل پیکربندی بهروز Firebase خود (
GoogleService-Info.plist) استفاده میکند.
فایل پیکربندی برنامه خود را دریافت کنید.بررسی کنید که آیا هنوز خطا را دریافت میکنید یا خیر. اگر چنین است، به مرحله عیبیابی بعدی بروید.
مطمئن شوید که کلاینتهای OAuth 2.0 مورد نیاز، موجود هستند.
در صفحه Credentials کنسول Google Cloud ، به بخش OAuth 2.0 Client IDs نگاه کنید.
اگر کلاینتهای OAuth 2.0 وجود ندارند (و شما تمام مراحل عیبیابی بالا را انجام دادهاید)، با پشتیبانی تماس بگیرید .
اگر با خطای زیر مواجه شدید، مراحل عیبیابی موجود در این سوالات متداول را دنبال کنید:
AuthErrorCode.INVALID_OAUTH_CLIENT_ID
مطمئن شوید که ورود به سیستم گوگل به عنوان یک ارائه دهنده احراز هویت به درستی فعال شده است:
در کنسول Firebase ، بخش Authentication را باز کنید.
در تب روش ورود ، روش ورود به سیستم گوگل را غیرفعال و سپس دوباره فعال کنید (حتی اگر از قبل فعال باشد):
روش ورود به سیستم گوگل را باز کنید، آن را غیرفعال کنید و سپس روی ذخیره کلیک کنید.
روش ورود به سیستم گوگل را دوباره باز کنید، آن را فعال کنید و سپس روی ذخیره کلیک کنید.
همچنین، در پیکربندی ارائهدهنده ورود به سیستم گوگل در بخش Authentication ، مطمئن شوید که شناسه و رمز کلاینت OAuth با کلاینت وب نمایش داده شده در صفحه اعتبارنامهها در کنسول Google Cloud مطابقت داشته باشد (به بخش شناسههای کلاینت OAuth 2.0 مراجعه کنید).
اگر با خطای زیر مواجه شدید، مراحل عیبیابی موجود در این سوالات متداول را دنبال کنید:
This domain YOUR_REDIRECT_DOMAIN is not authorized to run this operation.
این خطا به احتمال زیاد به این دلیل ایجاد میشود که دامنهی ریدایرکت شما به عنوان یک دامنهی مجاز برای Firebase Authentication فهرست نشده است، یا کلید API که با سرویس Firebase Authentication استفاده میکنید نامعتبر است.
ابتدا مطمئن شوید که YOUR_REDIRECT_DOMAIN در فهرست دامنههای مجاز برای پروژه Firebase شما قرار دارد. اگر دامنه ریدایرکت شما از قبل در آنجا فهرست شده است، عیبیابی کلید API نامعتبر را ادامه دهید.
به طور پیشفرض، Firebase Authentication JS SDK به کلید API پروژه Firebase شما که با عنوان Browser key برچسبگذاری شده است، متکی است و از این کلید برای تأیید اعتبار URL تغییر مسیر ورود به سیستم طبق لیست دامنههای مجاز استفاده میکند. Authentication بسته به نحوه دسترسی شما به Authentication SDK، این کلید API را دریافت میکند:
اگر از کمککنندههای احراز هویت ارائه شده توسط Hosting برای ورود کاربران با Authentication JS SDK استفاده میکنید، Firebase هر بار که در Firebase Hosting مستقر میشوید، به طور خودکار کلید API شما را با بقیه پیکربندی Firebase دریافت میکند. مطمئن شوید که
authDomainدرfirebaseConfigبرنامه وب شما به درستی پیکربندی شده است تا از یکی از دامنههای آن سایت Hosting استفاده کند. میتوانید با رفتن بهhttps:// authDomain __/firebase/init.jsonو بررسی اینکهprojectIdباfirebaseConfigشما مطابقت دارد، این موضوع را تأیید کنید.اگر کد ورود را خودتان میزبانی میکنید ، میتوانید از فایل
__/firebase/init.jsonبرای ارائه پیکربندی Firebase به کمککننده self-hosted Authentication JS SDK Redirect استفاده کنید. کلید API وprojectIdذکر شده در این فایل پیکربندی باید باfirebaseConfigبرنامه وب شما مطابقت داشته باشند.
بررسی کنید که این کلید API حذف نشده باشد: در کنسول Google Cloud به پنل APIs & Services > Credentials بروید، جایی که تمام کلیدهای API پروژه شما فهرست شدهاند.
اگر
Browser keyحذف نشده است، موارد زیر را بررسی کنید:مطمئن شوید که API Firebase Authentication در فهرست APIهای مجاز برای دسترسی به کلید قرار دارد ( درباره محدودیتهای API برای کلیدهای API بیشتر بدانید ).
اگر کد ورود را خودتان میزبانی میکنید، مطمئن شوید که کلید API ذکر شده در فایل
__/firebase/init.jsonشما با کلید API موجود در کنسول Google Cloud مطابقت دارد. در صورت لزوم، کلید موجود در فایل را اصلاح کنید، سپس برنامه خود را مجدداً مستقر کنید.اگر
Browser keyحذف شده است، میتوانید از Firebase بخواهید که یک کلید API جدید برای شما ایجاد کند: در کنسول Firebase ، به مسیر زیر بروید> تنظیمات پروژه ، سپس در بخش برنامههای شما ، روی برنامه وب خود کلیک کنید. این اقدام به طور خودکار یک کلید API ایجاد میکند که میتوانید در بخش تنظیمات و پیکربندی SDK برای برنامه وب خود مشاهده کنید.
توجه داشته باشید که در کنسول Google Cloud این کلید API جدید،
Browser keyنامیده نمیشود؛ در عوض، نام آن با نام مستعار برنامه وب Firebase شما یکسان خواهد بود. اگر تصمیم دارید محدودیتهای API را به این کلید API جدید اضافه کنید ، مطمئن شوید که API Firebase Authentication در فهرست APIهای مجاز قرار دارد.پس از ایجاد کلید API جدید، مراحل مربوطه زیر را انجام دهید:
اگر از URL های Hosting رزرو شده استفاده میکنید، برنامه خود را در Firebase مجدداً مستقر کنید تا بتواند به طور خودکار کلید API جدید را با بقیه پیکربندی Firebase شما دریافت کند.
اگر کد ورود را خودتان میزبانی میکنید ، کلید API جدید را کپی کرده و آن را به فایل
__/firebase/init.jsonخود اضافه کنید، سپس برنامه خود را مجدداً مستقر کنید.
صفحه اعتبارنامهها (Credentials) کنسول Google Cloud را باز کنید.
در بالای صفحه، گزینهی «ایجاد اعتبارنامهها» > «شناسهی کلاینت OAuth» را انتخاب کنید.
اگر از شما خواسته شد صفحه رضایت خود را پیکربندی کنید، دستورالعملهای روی صفحه را دنبال کنید و سپس مراحل زیر را در این سوالات متداول ادامه دهید.
کلاینت وب OAuth را ایجاد کنید:
برای نوع برنامه ، برنامه وب را انتخاب کنید.
برای Authorized JavaScript Origins ، موارد زیر را اضافه کنید:
-
http://localhost -
http://localhost:5000 -
https:// PROJECT_ID .firebaseapp.com -
https:// PROJECT_ID .web.app
-
برای URL های تغییر مسیر مجاز ، موارد زیر را اضافه کنید:
-
https:// PROJECT_ID .firebaseapp.com/__/auth/handler -
https:// PROJECT_ID .web.app/__/auth/handler
-
کلاینت OAuth را ذخیره کنید.
شناسه کلاینت OAuth جدید و رمز کلاینت را در کلیپبورد خود کپی کنید.
در کنسول Firebase ، بخش Authentication را باز کنید.
در تب روش ورود ، ارائهدهنده ورود به سیستم گوگل را باز کنید و سپس شناسه و رمز کلاینت وب سرور را که از کنسول Google Cloud ساخته و کپی کردهاید، جایگذاری کنید. روی ذخیره کلیک کنید.
قبل از دسامبر ۲۰۲۲، %APP_NAME% در الگوی ایمیل با نام تجاری OAuth پر میشد که هر زمان یک برنامه اندروید در پروژه Firebase ثبت میشد، به طور خودکار ارائه میشد. اکنون، از آنجایی که نام تجاری OAuth فقط زمانی ارائه میشود که ورود به سیستم گوگل فعال باشد، موارد زیر نحوه تعیین %APP_NAME% را شرح میدهد:
اگر نام تجاری OAuth در دسترس باشد،
%APP_NAME%در الگوی ایمیل، نام تجاری OAuth خواهد بود (همانند رفتار قبل از دسامبر ۲۰۲۲).اگر نام تجاری OAuth در دسترس نباشد ، نحوه تعیین
%APP_NAME%در الگوی ایمیل به این صورت است:برای برنامههای وب ،
%APP_NAME%نام پیشفرض سایت Firebase Hosting خواهد بود (مقداری که قبل از.firebaseapp.comو.web.appقرار میگیرد و معمولاً شناسه پروژه Firebase است).برای برنامههای موبایل:
اگر نام بسته اندروید یا شناسه بسته iOS در درخواست موجود باشد،
%APP_NAME%نام برنامهای خواهد بود که به ترتیب در Play Store یا App Store استفاده میشود.در غیر این صورت،
%APP_NAME%نام پیشفرض سایت Firebase Hosting خواهد بود (مقداری که قبل از.firebaseapp.comو.web.appقرار میگیرد و معمولاً شناسه پروژه Firebase است).
توجه داشته باشید که اگر جستجوی نام پیشفرض سایت Firebase Hosting با شکست مواجه شد، آخرین راه حل استفاده از شناسه پروژه Firebase به عنوان
%APP_NAME%است.