قبل از استفاده از شبیهساز احراز هویت با برنامه خود، مطمئن شوید که گردش کار مجموعه محلی شبیهساز محلی Firebase را درک کردهاید ، و مجموعه شبیهساز محلی را نصب و پیکربندی کرده و دستورات CLI آن را مرور میکنید.
این موضوع فرض میکند که شما قبلاً با توسعه راهحلهای احراز هویت Firebase برای تولید آشنا هستید. در صورت نیاز، مستندات ترکیبی از پلتفرم و تکنیک احراز هویت را بررسی کنید.
شبیهساز Authentication شبیهسازی محلی با وفاداری بالا از سرویسهای احراز هویت Firebase را ارائه میکند و بسیاری از عملکردهای موجود در Firebase Authentication تولیدی را ارائه میدهد. این شبیه ساز همراه با پلتفرم های اپل، اندروید و Web Firebase SDK به شما امکان می دهد:
- ایجاد، بهروزرسانی و مدیریت حسابهای کاربری شبیهسازیشده برای آزمایش ایمیل/گذرواژه، شماره تلفن/پیامک، پیامک چند عاملی، و احراز هویت ارائهدهنده هویت شخص ثالث (مثلاً Google)
- مشاهده و ویرایش کاربران شبیه سازی شده
- نمونه اولیه سیستم های احراز هویت توکن سفارشی
- پیامهای مربوط به احراز هویت را در تب Emulator UI Logs بررسی کنید.
مجموعه شبیه ساز محلی Firebase محصولات را برای یک پروژه Firebase تقلید می کند.
برای انتخاب پروژه مورد استفاده، قبل از شروع شبیه سازها، در CLI از firebase use
. یا، می توانید پرچم --project
به هر فرمان شبیه ساز ارسال کنید.
Local Emulator Suite از شبیه سازی پروژه های Firebase واقعی و پروژه های آزمایشی پشتیبانی می کند.
نوع پروژه | امکانات | با شبیه سازها استفاده کنید |
---|---|---|
واقعی | یک پروژه Firebase واقعی پروژه ای است که شما ایجاد و پیکربندی کرده اید (به احتمال زیاد از طریق کنسول Firebase). پروژه های واقعی دارای منابع زنده هستند، مانند نمونه های پایگاه داده، سطل های ذخیره سازی، توابع یا هر منبع دیگری که برای آن پروژه Firebase تنظیم کرده اید. | هنگام کار با پروژه های Firebase واقعی، می توانید شبیه سازها را برای هر یک یا همه محصولات پشتیبانی شده اجرا کنید. برای هر محصولی که شبیهسازی نمیکنید، برنامهها و کد شما با منبع زنده (نمونه پایگاه داده، سطل ذخیرهسازی، عملکرد و غیره) تعامل خواهند داشت. |
نسخه ی نمایشی | یک پروژه Firebase آزمایشی هیچ پیکربندی Firebase واقعی و هیچ منبع زنده ای ندارد. این پروژه ها معمولاً از طریق نرم افزارهای کد یا آموزش های دیگر قابل دسترسی هستند. شناسه های پروژه برای پروژه های نمایشی دارای پیشوند | هنگام کار با پروژه های Firebase آزمایشی، برنامه ها و کد شما فقط با شبیه سازها تعامل دارند. اگر برنامه شما سعی کند با منبعی که شبیه ساز برای آن اجرا نمی شود تعامل داشته باشد، آن کد با شکست مواجه می شود. |
توصیه می کنیم تا جایی که امکان دارد از پروژه های نمایشی استفاده کنید. مزایا عبارتند از:
- راه اندازی آسان تر، زیرا می توانید شبیه سازها را بدون ایجاد پروژه Firebase اجرا کنید
- ایمنی قوی تر، زیرا اگر کد شما به طور تصادفی منابع غیر شبیه سازی شده (تولید) را فراخوانی کند، هیچ شانسی برای تغییر داده ها، استفاده و صورتحساب وجود ندارد.
- پشتیبانی آفلاین بهتر است، زیرا برای دانلود پیکربندی SDK نیازی به دسترسی به اینترنت نیست.
پیکربندی درونبرنامه یا کلاسهای آزمایشی خود را برای تعامل با شبیهساز احراز هویت به شرح زیر تنظیم کنید.
Firebase.auth.useEmulator("10.0.2.2", 9099)
FirebaseAuth.getInstance().useEmulator("10.0.2.2", 9099);
Auth.auth().useEmulator(withHost:"127.0.0.1", port:9099)
import { getAuth, connectAuthEmulator } from "firebase/auth"; const auth = getAuth(); connectAuthEmulator(auth, "http://127.0.0.1:9099");
const auth = firebase.auth(); auth.useEmulator("http://127.0.0.1:9099");
برای نمونه سازی اولیه و تست تعاملات بین احراز هویت و توابع ابری یا قوانین امنیتی Firebase برای Cloud Firestore یا پایگاه داده بیدرنگ نیازی به تنظیمات اضافی نیست. هنگامی که شبیه ساز Authentication پیکربندی می شود و شبیه سازهای دیگر در حال اجرا هستند، به طور خودکار با هم کار می کنند.
هنگامی که متغیر محیطی FIREBASE_AUTH_EMULATOR_HOST
تنظیم شود، کیت توسعه نرم افزاری مدیریت Firebase به طور خودکار به شبیه ساز احراز هویت متصل می شود.
export FIREBASE_AUTH_EMULATOR_HOST="127.0.0.1:9099"
توجه داشته باشید که شبیه ساز Cloud Functions به طور خودکار از شبیه ساز Authentication آگاه است، بنابراین می توانید هنگام آزمایش ادغام بین توابع Cloud و شبیه سازهای Authentication از این مرحله صرف نظر کنید. متغیر محیطی به طور خودکار برای Admin SDK در توابع Cloud تنظیم می شود.
با مجموعه متغیر محیطی، Firebase Admin SDK ها شناسه های بدون امضا و کوکی های جلسه صادر شده توسط شبیه ساز احراز هویت (به ترتیب از طریق روش های verifyIdToken
و createSessionCookie
) را برای تسهیل توسعه و آزمایش محلی می پذیرند. لطفاً مطمئن شوید که متغیر محیطی را در تولید تنظیم نکنید .
اگر میخواهید کد Admin SDK شما به یک شبیهساز مشترک که در محیط دیگری اجرا میشود متصل شود، باید همان ID پروژهای را که با استفاده از Firebase CLI تنظیم کردهاید، مشخص کنید. میتوانید یک شناسه پروژه را برای initializeApp
به طور مستقیم ارسال کنید یا متغیر محیطی GCLOUD_PROJECT
را تنظیم کنید.
admin.initializeApp({ projectId: "your-project-id" });
export GCLOUD_PROJECT="your-project-id"
به دلایل امنیتی، شبیهساز احراز هویت، نشانههای شناسه بدون امضا را صادر میکند، که فقط توسط سایر شبیهسازهای Firebase یا Firebase Admin SDK پس از پیکربندی قابل قبول هستند. این توکنها توسط سرویسهای Firebase تولیدی یا Firebase Admin SDK در حال اجرا در حالت تولید رد میشوند (به عنوان مثال رفتار پیشفرض بدون مراحل راهاندازی که در بالا توضیح داده شد).
می توانید از شبیه ساز Authentication به صورت تعاملی از طریق رابط کاربری Emulator Suite و به صورت غیر تعاملی از طریق رابط REST محلی آن استفاده کنید. بخشهای زیر موارد استفاده تعاملی و غیرتعاملی را پوشش میدهند.
برای راهاندازی شبیهساز احراز هویت، رابط REST آن، و رابط کاربری Emulator Suite، اجرا کنید:
firebase emulators:start
برای احراز هویت ناشناس ، برنامه شما میتواند منطق ورود به سیستم را برای پلتفرم شما ( iOS ، Android ، وب ) اعمال کند.
برای احراز هویت ایمیل/گذرواژه ، میتوانید با افزودن حسابهای کاربری به شبیهساز احراز هویت از برنامه خود با استفاده از روشهای Authentication SDK یا با استفاده از رابط کاربری Emulator Suite، نمونهسازی اولیه را شروع کنید.
- در رابط کاربری Emulator Suite، روی تب Authentication کلیک کنید.
- روی دکمه افزودن کاربر کلیک کنید.
- با پر کردن فیلدهای احراز هویت ایمیل، جادوگر ایجاد حساب کاربری را دنبال کنید.
با ایجاد یک کاربر آزمایشی، برنامه شما میتواند کاربر را با منطق SDK برای پلتفرم شما ( iOS ، Android ، وب ) وارد و خارج کند.
برای آزمایش تأیید ایمیل/ورود به سیستم با جریانهای پیوند ایمیل، شبیهساز یک URL را به ترمینالی که در آن firebase emulators:start
اجرا شده است، چاپ میکند.
i To verify the email address customer@ex.com, follow this link:
http://127.0.0.1:9099/emulator/action?mode=verifyEmail&lang=en&oobCode=XYZ123&apiKey=fake-api-key
برای شبیهسازی رویداد تأیید، پیوند را در مرورگر خود جایگذاری کنید و بررسی کنید که آیا تأیید با موفقیت انجام شده است یا خیر.
{
"authEmulator": {
"success": "The email has been successfully verified.",
"email": "customer@example.com"
}
}
برای آزمایش بازنشانی رمز عبور، شبیهساز یک URL مشابه، شامل پارامتر newPassword (که ممکن است در صورت نیاز آن را تغییر دهید) را در ترمینال چاپ میکند.
http://127.0.0.1:9099/emulator/action?mode=resetPassword&oobCode=XYZ!23&apiKey=fake-api-key&newPassword=YOUR_NEW_PASSWORD
به جای استفاده از رابط کاربری Emulator Suite یا کد مشتری برای مدیریت حسابهای کاربری ایمیل/گذرواژه، میتوانید اسکریپتهای راهاندازی آزمایشی بنویسید که REST API را برای ایجاد و حذف حسابهای کاربری فراخوانی میکند و کدهای تأیید ایمیل خارج از باند را واکشی میکند تا تأیید ایمیل شبیهساز را تکمیل کند. URL. این پلتفرم و کد تست را جدا نگه می دارد و به شما امکان می دهد به صورت غیر تعاملی تست کنید.
برای جریان های تست ایمیل و رمز عبور غیر تعاملی، ترتیب معمولی به شرح زیر است.
- کاربرانی را با نقطه پایانی REST signUp Authentication ایجاد کنید.
- کاربران را با استفاده از ایمیل ها و گذرواژه ها برای انجام آزمایشات وارد کنید.
- اگر برای آزمایشهای شما قابل اجرا است، کدهای تأیید ایمیل خارج از باند موجود را از نقطه پایانی REST خاص شبیهساز واکشی کنید.
- برای پاک کردن دادهها، سوابق کاربر را با نقطه پایانی REST مخصوص شبیهساز بشویید.
برای احراز هویت تلفن، شبیه ساز Auth پشتیبانی نمی کند:
- جریان های reCAPTCHA و APN. پس از پیکربندی برای تعامل با شبیه ساز، SDK های مشتری این روش های تأیید را به روشی مشابه آنچه برای آزمایش ادغام توضیح داده شده است ( iOS ، Android ، وب ) غیرفعال می کنند.
- شماره تلفن ها را با کدهای از پیش پیکربندی شده در کنسول Firebase آزمایش کنید.
در غیر این صورت، از نظر کد مشتری، جریان احراز هویت تلفن/پیام با آنچه برای تولید توضیح داده شده است ( iOS ، Android ، وب ) یکسان است.
استفاده از رابط کاربری Emulator Suite:
- در رابط کاربری Emulator Suite، روی تب Authentication کلیک کنید.
- روی دکمه افزودن کاربر کلیک کنید.
- با پر کردن فیلدهای احراز هویت تلفن، جادوگر ایجاد حساب کاربری را دنبال کنید.
با این حال، برای جریانهای احراز هویت تلفن، شبیهساز ارسال هیچ پیام متنی را آغاز نمیکند، زیرا تماس با شرکت مخابراتی خارج از محدوده است و برای آزمایش محلی دوستانه نیست! در عوض، شبیهساز کدی را که از طریق پیامک به همان پایانهای که در آن firebase emulators:start
; این کد را به برنامه وارد کنید تا کاربران پیام های متنی خود را شبیه سازی کنند.
برای آزمایش احراز هویت تلفن غیرتعاملی، از Authentication emulator REST API برای بازیابی کدهای پیامک موجود استفاده کنید. توجه داشته باشید که هر بار که جریان را شروع می کنید، کد متفاوت است.
توالی معمولی به شرح زیر است.
- برای شروع فرآیند تأیید، با
signInWithPhoneNumber
پلت فرم تماس بگیرید. - کد تأیید را با استفاده از نقطه پایانی REST مخصوص شبیه ساز بازیابی کنید.
- به طور معمول با کد تأیید با
confirmationResult.confirm(code)
تماس بگیرید.