Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

برنامه خود را به شبیه ساز تأیید اعتبار وصل کنید

قبل از استفاده از شبیه ساز احراز هویت با شما برنامه، مطمئن شوید که شما را در درک کلی گردش کار فایربیس محلی شبیه ساز سوئیت ، و به شما نصب و پیکربندی محلی شبیه ساز سوئیت و بررسی آن دستورات CLI .

با شبیه ساز احراز هویت چکار می توانم انجام دهم؟

شبیه ساز احراز هویت فراهم می کند بالا وفاداری تقلید محلی از خدمات فایربیس احراز هویت، ارائه بسیاری از قابلیت های موجود در تولید فایربیس احراز هویت . شبیه ساز با SDK های iOS ، Android و Firebase تحت وب ، به شما امکان می دهد:

  • ایجاد ، به روز رسانی و مدیریت حساب های کاربری شبیه سازی شده برای آزمایش ایمیل/رمز عبور ، شماره تلفن/پیام کوتاه و ورود به سیستم با ارائه دهندگان هویت شخص ثالث (مانند Google)
  • مشاهده و ویرایش کاربران شبیه سازی شده
  • پیامهای مربوط به احراز هویت را در برگه Logs UI Emulator بررسی کنید.

پروژه Firebase را انتخاب کنید

مجموعه Firebase Local Emulator Suite محصولات را برای یک پروژه Firebase تقلید می کند.

برای انتخاب پروژه به استفاده از، قبل از شروع شبیه ساز، در CLI اجرا firebase use در دایرکتوری خود را. یا، شما می توانید عبور --project پرچم را به هر فرمان شبیه ساز.

محلی شبیه ساز سوئیت پشتیبانی از تقلید از پروژه های فایربیس واقعی و نسخه ی نمایشی پروژه.

نوع پروژه امکانات با شبیه سازها استفاده کنید
واقعی

یک پروژه واقعی Firebase پروژه ای است که شما ایجاد کرده اید و پیکربندی کرده اید (به احتمال زیاد از طریق کنسول Firebase).

پروژه های واقعی دارای منابع زنده هستند ، مانند نمونه های پایگاه داده ، سطوح ذخیره سازی ، عملکردها یا هر منبع دیگری که برای آن پروژه Firebase تنظیم کرده اید.

هنگام کار با پروژه های واقعی Firebase ، می توانید شبیه سازها را برای همه یا همه محصولات پشتیبانی شده اجرا کنید.

برای هر محصول شما تقلید نمی، برنامه ها و کد خود را با منابع زندگی می کنند (به عنوان مثال پایگاه داده، سطل ذخیره سازی، عملکرد، و غیره) ارتباط برقرار خواهد کرد.

نسخه ی نمایشی

پروژه نسخه ی نمایشی فایربیس هیچ پیکربندی فایربیس واقعی و بدون منابع زندگی می کنند. این پروژه ها معمولاً از طریق codelabs یا سایر آموزش ها قابل دسترسی هستند.

پروژه شناسه برای نسخه ی نمایشی پروژه دارند demo- پیشوند.

در هنگام کار با نسخه ی نمایشی پروژه فایربیس، برنامه های خود و تعامل با کد تنها شبیه ساز. اگر برنامه شما سعی کند با منبعی که شبیه ساز برای آن کار نمی کند تعامل داشته باشد ، آن کد شکست می خورد.

توصیه می کنیم تا جایی که امکان دارد از پروژه های نمایشی استفاده کنید. مزایای آن عبارتند از:

  • راه اندازی راحت تر ، زیرا می توانید شبیه سازها را بدون ایجاد پروژه Firebase اجرا کنید
  • ایمنی قوی تر ، زیرا اگر کد شما به طور تصادفی از منابع غیر الگوبرداری (تولید) استفاده کند ، هیچ فرصتی برای تغییر داده ها ، استفاده و صورتحساب وجود ندارد
  • پشتیبانی آفلاین بهتر است ، زیرا برای بارگیری پیکربندی SDK خود نیازی به دسترسی به اینترنت ندارید.

به برنامه خود ابزار دهید تا با شبیه ساز احراز هویت صحبت کند

SDK های Android ، iOS و وب

پیکربندی درون برنامه ای یا کلاس های آزمایشی خود را برای تعامل با شبیه ساز احراز هویت به شرح زیر تنظیم کنید.

اندروید
FirebaseAuth.getInstance().useEmulator('10.0.2.2', 9099);
iOS - Swift
Auth.auth().useEmulator(withHost:"localhost", port:9099)

نسخه وب 9

import { getAuth, connectAuthEmulator } from "firebase/auth";

const auth = getAuth();
connectAuthEmulator(auth, "http://localhost:9099");

نسخه وب 8

const auth = firebase.auth();
auth.useEmulator("http://localhost:9099");

برای ایجاد نمونه اولیه و آزمایش تعاملات بین احراز هویت و عملکردهای ابری یا قوانین امنیتی Firebase برای Cloud Firestore یا پایگاه داده Realtime ، نیازی به تنظیمات اضافی نیست. هنگامی که شبیه ساز احراز هویت پیکربندی شده و شبیه سازهای دیگر در حال اجرا هستند ، آنها به طور خودکار با هم کار می کنند.

SDK مدیریت

فایربیس محیط مدیریت SDK به طور خودکار به شبیه ساز احراز هویت زمانی که FIREBASE_AUTH_EMULATOR_HOST متغیر محیطی تنظیم شده است.

export FIREBASE_AUTH_EMULATOR_HOST="localhost:9099"

توجه داشته باشید که شبیه ساز عملکردهای ابری به طور خودکار از شبیه ساز احراز هویت مطلع است ، بنابراین هنگام آزمایش ادغام بین عملکردهای ابر و شبیه سازهای احراز هویت ، می توانید از این مرحله بگذرید. متغیر محیط به طور خودکار برای Admin SDK در Cloud Functions تنظیم می شود.

با مجموعه ای متغیر محیطی، فایربیس محیط مدیریت SDK ها خواهد بدون علامت ID نشانه و جلسه کوکی ها صادر شده توسط شبیه ساز احراز هویت (از طریق قبول verifyIdToken و createSessionCookie به ترتیب روش) به منظور تسهیل developmemt محلی و تست. لطفا مطمئن شوید که به مجموعه ای از متغیر محیطی در تولید نیست.

هنگام اتصال به شبیه ساز احراز هویت ، باید شناسه پروژه را مشخص کنید. شما می توانید یک شناسه پروژه به تصویب initializeApp مستقیم و یا مجموعه ای GCLOUD_PROJECT متغیر محیط زیست است. توجه داشته باشید که نیازی به استفاده از شناسه پروژه Firebase واقعی خود ندارید. شبیه ساز احراز هویت هر گونه شناسه پروژه را می پذیرد.

SDK سرور Node.js
admin.initializeApp({ projectId: "your-project-id" });
متغیر محیطی
export GCLOUD_PROJECT="your-project-id"

نشانه های ID

به دلایل امنیتی، تصدیق شبیه ساز مسائل نشانه ID بدون علامت، که تنها توسط سایر نرمافزارهای شبیه ساز فایربیس پذیرفته، یا فایربیس محیط مدیریت SDK که پیکربندی . این نشانه ها توسط سرویس های Firebase تولیدی یا SDK سرپرست Firebase که در حالت تولید اجرا می شوند (مانند رفتار پیش فرض بدون مراحل راه اندازی که در بالا توضیح داده شد) رد می شوند.

برای شروع نمونه سازی تعاملی با شبیه ساز احراز هویت و رابط کاربری Emulator Suite ، مجموعه شبیه ساز محلی Firebase را راه اندازی کنید.

firebase emulators:start

برای احراز هویت ناشناس، برنامه شما می توانید ورود به سیستم در منطق برای پلت فرم خود را (ورزش در iOS ، آندروید ، وب ).

برای احراز هویت ایمیل / رمز عبور، شما می توانید شروع به نمونه سازی با اضافه کردن حساب های کاربری به شبیه ساز احراز هویت از برنامه خود را با استفاده از روش های تأیید هویت SDK، یا با استفاده از شبیه ساز سوئیت UI.

  1. در شبیه ساز سوئیت UI، کلیک بر روی زبانه احراز هویت.
  2. با کلیک بر روی دکمه Add کاربر.
  3. جادوگر ایجاد حساب کاربری را دنبال کنید ، فیلدهای احراز هویت ایمیل را پر کنید.

با یک کاربر آزمون ایجاد، برنامه شما می توانید برای کاربران در داخل و خارج با منطق SDK برای پلت فرم خود را (ثبت نام در iOS ، آندروید ، وب ).

برای آزمایش تایید ایمیل / ورود به سیستم با جریان لینک ایمیل، شبیه ساز چاپ یک URL به ترمینال که در آن firebase emulators:start اعدام شد.

i  To verify the email address customer@ex.com, follow this link:
http://localhost: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://localhost:9099/emulator/action?mode=resetPassword&oobCode=XYZ!23&apiKey=fake-api-key&newPassword=YOUR_NEW_PASSWORD

آزمایش غیر تعاملی

به جای استفاده از رابط کاربری Emulator Suite یا کد سرویس گیرنده برای مدیریت حساب های کاربری ایمیل/رمز عبور ، می توانید اسکریپت های راه اندازی آزمایشی را بنویسید که API های REST را برای ایجاد و حذف حساب های کاربری و آوردن کدهای تأیید ایمیل خارج از باند برای پر کردن تأیید ایمیل شبیه ساز بنویسید. آدرس اینترنتی این باعث می شود پلت فرم و کد آزمون جدا از هم قرار گرفته و به شما امکان آزمایش غیر تعاملی را می دهد.

برای جریانهای آزمایشی ایمیل و رمز عبور غیر تعاملی ، دنباله معمولی به شرح زیر است.

  1. ایجاد کاربران با احراز هویت نقطه پایانی ثبت نام REST .
  2. با استفاده از ایمیل ها و گذرواژه ها برای انجام آزمایشات وارد سیستم شوید.
  3. اگر قابل اجرا به آزمون خود را، واکشی خارج از باند کدهای تأیید ایمیل در دسترس است از شبیه ساز خاص endpont REST .
  4. سوابق کاربران خیط و پیت کردن با شبیه ساز خاص نقطه پایانی REST برای داده های پاکسازی.

احراز هویت تلفن/پیامک شبیه سازی شده

برای احراز هویت تلفن ، شبیه ساز Auth پشتیبانی نمی کند:

  • جریانهای reCAPTCHA و APN. هنگامی که به تعامل با شبیه ساز پیکربندی، SDK ها مشتری این روش تایید غیر فعال کردن در یک روش مشابه به آن شرح داده برای آزمون ادغام ( در iOS ، آندروید ، وب ).
  • شماره تلفن ها را با کدهای از پیش تنظیم شده در کنسول Firebase آزمایش کنید.

در غیر این صورت، از نظر کد مشتری، تلفن / اس ام اس جریان احراز هویت یکسان است که توصیف برای تولید (است در iOS ، آندروید ، وب ).

استفاده از رابط کاربری Emulator Suite:

  1. در شبیه ساز سوئیت UI، کلیک بر روی زبانه احراز هویت.
  2. با کلیک بر روی دکمه Add کاربر.
  3. جادوگر ایجاد حساب کاربری را دنبال کنید ، فیلدهای احراز هویت تلفن را پر کنید.

با این حال ، برای جریانهای احراز هویت تلفن ، شبیه ساز هیچ گونه پیام متنی را تحریک نمی کند ، زیرا تماس با حامل خارج از محدوده است و برای آزمایش محلی دوستانه نیست! در عوض، شبیه ساز، مجسمه سازی از کد است که می توانست از طریق SMS به ترمینال که در آن شما زد ارسال گردیده است firebase emulators:start ؛ این کد را به برنامه وارد کنید تا کاربران در حال بررسی پیام های متنی خود باشند.

آزمایش غیر تعاملی

برای آزمایش احراز هویت غیر تعاملی تلفن ، از بازیابی احراز هویت REST API برای بازیابی کدهای پیامکی موجود استفاده کنید. توجه داشته باشید که هر بار که جریان را شروع می کنید کد متفاوت است.

دنباله معمولی به شرح زیر است.

  1. پاسخ پلت فرم signInWithPhoneNumber شروع به فرآیند راستی آزمایی.
  2. بازیابی کد امنیتی را با استفاده از شبیه ساز خاص نقطه پایانی REST .
  3. پاسخ confirmationResult.confirm(code) به طور معمول با کد امنیتی.

احراز هویت شبیه ساز ارائه دهنده هویت شخص ثالث (IDP)

شبیه ساز احراز هویت به شما امکان می دهد بسیاری از جریانهای احراز هویت شخص ثالث را در iOS ، Android یا برنامه های وب خود بدون تغییر در کد تولید آزمایش کنید. برای نمونه هایی از جریان احراز هویت، اسناد و مدارک برای مختلف مشورت ترکیبی از ارائه دهندگان و سیستم عامل شما می توانید در برنامه خود استفاده کنید .

به طور کلی ، می توانید از Firebase SDK برای احراز هویت به یکی از دو روش استفاده کنید:

  • برنامه شما به SDK اجازه می دهد تا کل مراحل را به صورت کامل ، از جمله تمام تعاملات با ارائه دهندگان IDP شخص ثالث برای بازیابی اعتبار ، انجام دهد.
  • برنامه شما به صورت دستی اعتبارنامه های ارائه دهنده شخص ثالث را با استفاده از SDK آن شخص بازیابی می کند و این اعتبارنامه ها را به SDK احراز هویت منتقل می کند.

مجدداً ، پیوند اسناد بالا را بررسی کنید و مطمئن شوید که با هر کدام از جریانات آشنا هستید - Firebase SDK در مقابل بازیابی اعتبارنامه دستی - که می خواهید از آن استفاده کنید. شبیه ساز احراز هویت از آزمایش هر دو رویکرد پشتیبانی می کند.

آزمایش جریانهای IDP مبتنی بر SDK Firebase

اگر برنامه خود را با استفاده از هر فایربیس SDK پایان به پایان جریان، مانند OAuthProvider برای ورود به با مایکروسافت، گیتهاب، و یا یاهو، برای آزمایش های تعاملی، شبیه ساز احراز هویت در خدمت یک نسخه محلی از صفحه ورود به سیستم مربوط به شما کمک کند تست احراز هویت از برنامه های وب که تماس signinWithPopup یا signInWithRedirect روش. این صفحه ورود به سیستم محلی نیز در برنامه های تلفن همراه ظاهر می شود که توسط کتابخانه نمای وب پلت فرم شما ارائه شده است.

شبیه ساز در صورت لزوم با ایجاد جریان ، حسابهای کاربری و اعتبارنامه شخص ثالث ایجاد می کند.

آزمایش جریانات بیجاشده داخلی با بازیابی اعتبارنامه دستی

اگر شما استفاده از "دستی" ورود به سیستم تکنیک ها و پاسخ پلت فرم خود را signInWithCredentials روش، پس از آن، به طور معمول، برنامه شما واقعی ورود به سیستم شخص ثالث، درخواست و بازیابی اعتبار شخص ثالث واقعی است.

توجه داشته باشید که شبیه ساز تنها پشتیبانی از signInWithCredential احراز هویت برای اعتبار بازیابی شده از Google وارد شوید، اپل، و دیگر ارائه دهندگان که استفاده ID نشانه به صورت JSON وب نشانههای (JWTs) اجرا شده است. نشانه های دسترسی (به عنوان مثال موارد ارائه شده توسط Facebook یا Twitter ، که JWT نیستند) پشتیبانی نمی شوند. بخش بعدی در مورد این موارد به جایگزینی می پردازد.

آزمایش غیر تعاملی

یکی از روشهای آزمایش غیر تعاملی ، خودکارسازی کلیکهای کاربر در صفحه ورود به سیستم است که توسط شبیه ساز ارائه می شود. برای برنامه های وب ، از رابط کنترل مانند WebDriver استفاده کنید. برای موبایل ، از ابزار آزمایش UI از پلت فرم خود استفاده کنید ، مانند Espresso یا Xcode.

متناوبا، شما می توانید کد خود را به استفاده روز رسانی signInWithCredential (به عنوان مثال در یک شاخه کد) و استفاده از یک جریان نشانه تأیید اعتبار با نشانه ID ساختگی برای حساب به جای اعتبار واقعی است.

  1. قسمتی از کد خود را که idTokens را از IDP بازیابی می کند ، دوباره بازنویسی یا نظر دهید. این کار نیازی به وارد کردن نام کاربری و گذرواژه واقعی در طول آزمایشات شما ندارد و آزمایشات شما را از سهمیه های API و محدودیت نرخ در IDP خلاص می کند.
  2. دوم، استفاده از یک رشته JSON تحت اللفظی در محل از این رمز برای signInWithCredential . با استفاده از SDK وب به عنوان مثال ، می توانید کد را به:
firebase.auth().signInWithCredential(firebase.auth.GoogleAuthProvider.credential(
  '{"sub": "abc123", "email": "foo@example.com", "email_verified": true}'
));

هنگامی که با شبیه ساز استفاده می شود، این کد را با موفقیت احراز هویت کاربر با ایمیل foo@example.com در گوگل. فیلد فرعی را به عنوان یک کلید اصلی در نظر بگیرید ، که می تواند به هر رشته ای تغییر کند و امضای کاربران مختلف را مسخره کند. شما می توانید جایگزین firebase.auth.GoogleAuthProvider با، برای مثال، new firebase.auth.OAuthProvider('yahoo.com') یا هر ارائه دهنده ID دیگر شما می خواهید به مسخره.

تفاوت شبیه ساز احراز هویت با تولید

شبیه ساز احراز هویت Firebase بسیاری از ویژگی های محصول تولیدی را شبیه سازی می کند. با این حال ، از آنجا که هر نوع سیستم احراز هویت متکی به امنیت در سطوح مختلف (دستگاه ، ارائه دهندگان شخص ثالث ، Firebase و غیره) است ، برای شبیه ساز دشوار است که همه جریانها را به درستی ایجاد کند.

IAM ابری

مجموعه Firebase Emulator Suite سعی نمی کند هرگونه رفتار مرتبط با IAM را برای اجرا تکرار یا احترام بگذارد. شبیه سازها به قوانین امنیتی Firebase پایبند هستند ، اما در شرایطی که معمولاً از IAM استفاده می شود ، به عنوان مثال برای تنظیم عملکرد سرویس های ابری و دسترسی به مجوزها ، شبیه ساز قابل پیکربندی نیست و از حساب جهانی موجود در دستگاه توسعه دهنده شما استفاده می کند ، مشابه اجرای مستقیم یک اسکریپت محلی.

از آنجا که در سیستم عامل های تلفن همراه ، ورود پیوند ایمیل به پیوندهای پویای Firebase متکی است ، همه این پیوندها در بستر وب (موبایل) intead باز می شوند.

ورود شخص ثالث

برای ورود به سیستم شخص ثالث ، احراز هویت Firebase متکی به اعتبارنامه های امن ارائه دهندگان شخص ثالث مانند Twitter و Github است.

اعتبار واقعی از ارائه دهندگان OpenID Connect مانند Google و Apple توسط شبیه ساز احراز هویت پذیرفته می شود. اعتبارنامه ارائه دهندگان غیر OpenID Connect پشتیبانی نمی شود.

ورود به سیستم ایمیل / پیامک

در برنامه های تولیدی ، جریان ورود به سیستم ایمیل و پیام کوتاه شامل یک عملیات ناهمزمان است که در آن کاربر پیام دریافتی را بررسی می کند و کد ورود به سیستم را وارد می کند. شبیه ساز احراز هویت کند هر ایمیل و یا پیام های SMS ارسال کنید، اما به عنوان توضیح بالا ، آن را تولید ورود کد و خروجی آنها را به ترمینال برای در تست استفاده شود.

شبیه ساز از قابلیت تعریف شماره تلفن های تست با کدهای ورود به سیستم ثابت پشتیبانی نمی کند ، همانطور که می توان با استفاده از کنسول Firebase انجام داد.

محدودیت نرخ / ضد سوء استفاده

شبیه ساز احراز هویت ویژگی های محدود کننده نرخ تولید یا ضد سوء استفاده را تکرار نمی کند.

بعدش چی؟