Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

با احراز هویت Firebase در Flutter شروع کنید

با مجموعه‌ها، منظم بمانید ذخیره و دسته‌بندی محتوا براساس اولویت‌های شما.

برنامه خود را به Firebase وصل کنید

اگر قبلاً این کار را نکرده اید ، SDK های Firebase را برای Flutter نصب و مقداردهی اولیه کنید .

احراز هویت Firebase را به برنامه خود اضافه کنید

  1. از ریشه پروژه Flutter خود، دستور زیر را برای نصب افزونه اجرا کنید:

    flutter pub add firebase_auth
    
  2. پس از تکمیل، برنامه Flutter خود را بازسازی کنید:

    flutter run
    
  3. افزونه را در کد دارت خود وارد کنید:

    import 'package:firebase_auth/firebase_auth.dart';
    

برای استفاده از یک ارائه دهنده احراز هویت، باید آن را در کنسول Firebase فعال کنید. به صفحه Sign-in Method در بخش Firebase Authentication بروید تا ورود ایمیل/گذرواژه و سایر ارائه دهندگان هویتی را که می خواهید برای برنامه خود فعال کنید.

(اختیاری) نمونه اولیه و آزمایش با Firebase Local Emulator Suite

قبل از صحبت در مورد اینکه برنامه شما چگونه کاربران را احراز هویت می‌کند، بیایید مجموعه‌ای از ابزارها را معرفی کنیم که می‌توانید از آنها برای نمونه‌سازی اولیه و آزمایش عملکرد احراز هویت استفاده کنید: Firebase Local Emulator Suite. اگر از میان تکنیک‌ها و ارائه‌دهندگان احراز هویت تصمیم می‌گیرید، آزمایش مدل‌های مختلف داده با داده‌های عمومی و خصوصی با استفاده از احراز هویت و قوانین امنیتی Firebase، یا نمونه‌سازی طرح‌های UI ورود به سیستم، امکان کار به صورت محلی بدون استقرار سرویس‌های زنده می‌تواند ایده خوبی باشد. .

شبیه‌ساز احراز هویت بخشی از Local Emulator Suite است که به برنامه شما امکان می‌دهد با محتوای پایگاه داده شبیه‌سازی‌شده و پیکربندی، و همچنین به‌صورت اختیاری منابع پروژه شبیه‌سازی شده شما (توابع، سایر پایگاه‌های داده و قوانین امنیتی) تعامل داشته باشد.

استفاده از شبیه ساز Authentication تنها شامل چند مرحله است:

  1. افزودن یک خط کد به پیکربندی آزمایشی برنامه برای اتصال به شبیه ساز.

  2. از ریشه دایرکتوری پروژه محلی خود، firebase emulators:start اجرا کنید.

  3. استفاده از Local Emulator Suite UI برای نمونه سازی تعاملی، یا Authentication emulator REST API برای تست غیرتعاملی.

  4. برای تعیین آدرس شبیه ساز و پورت، useAuthEmulator() را فراخوانی کنید:

    Future<void> main() async {
    WidgetsFlutterBinding.ensureInitialized();
    await Firebase.initializeApp();
    
    // Ideal time to initialize
    await FirebaseAuth.instance.useAuthEmulator('localhost', 9099);
    //...
    }
    

راهنمای دقیق در اتصال برنامه خود به شبیه‌ساز احراز هویت موجود است. برای اطلاعات بیشتر، به معرفی Local Emulator Suite مراجعه کنید.

حالا بیایید به نحوه احراز هویت کاربران ادامه دهیم.

وضعیت اعتبار فعلی را بررسی کنید

Firebase Auth روش ها و ابزارهای زیادی را برای شما فراهم می کند تا احراز هویت ایمن را در برنامه جدید یا موجود Flutter خود ادغام کنید. در بسیاری از موارد، شما باید در مورد وضعیت احراز هویت کاربر خود بدانید، مانند اینکه آیا آنها به سیستم وارد شده اند یا از سیستم خارج شده اند.

Firebase Auth شما را قادر می‌سازد تا از طریق Stream به صورت بلادرنگ در این وضعیت مشترک شوید. پس از فراخوانی، جریان یک رویداد فوری از وضعیت احراز هویت فعلی کاربر را ارائه می دهد و سپس هر زمان که وضعیت احراز هویت تغییر کرد، رویدادهای بعدی را ارائه می دهد.

سه روش برای گوش دادن به تغییرات وضعیت احراز هویت وجود دارد:

authStateChanges()

برای اشتراک در این تغییرات، authStateChanges() را در نمونه FirebaseAuth خود فراخوانی کنید:

FirebaseAuth.instance
  .authStateChanges()
  .listen((User? user) {
    if (user == null) {
      print('User is currently signed out!');
    } else {
      print('User is signed in!');
    }
  });

رویدادها زمانی فعال می شوند که موارد زیر رخ دهد:

  • بلافاصله پس از ثبت شنونده.
  • وقتی یک کاربر وارد سیستم شده است.
  • وقتی کاربر فعلی از سیستم خارج شده است.

idTokenChanges()

برای اشتراک در این تغییرات، idTokenChanges() را در نمونه FirebaseAuth خود فراخوانی کنید:

FirebaseAuth.instance
  .idTokenChanges()
  .listen((User? user) {
    if (user == null) {
      print('User is currently signed out!');
    } else {
      print('User is signed in!');
    }
  });

رویدادها زمانی فعال می شوند که موارد زیر رخ دهد:

  • بلافاصله پس از ثبت شنونده.
  • وقتی یک کاربر وارد سیستم شده است.
  • وقتی کاربر فعلی از سیستم خارج شده است.
  • زمانی که تغییری در توکن کاربر فعلی ایجاد شود.

userChanges()

برای اشتراک در این تغییرات، userChanges() را در نمونه FirebaseAuth خود فراخوانی کنید:

FirebaseAuth.instance
  .userChanges()
  .listen((User? user) {
    if (user == null) {
      print('User is currently signed out!');
    } else {
      print('User is signed in!');
    }
  });

رویدادها زمانی فعال می شوند که موارد زیر رخ دهد:

  • بلافاصله پس از ثبت شنونده.
  • وقتی یک کاربر وارد سیستم شده است.
  • وقتی کاربر فعلی از سیستم خارج شده است.
  • زمانی که تغییری در توکن کاربر فعلی ایجاد شود.
  • هنگامی که متدهای زیر ارائه شده توسط FirebaseAuth.instance.currentUser فراخوانی شود:
    • reload()
    • unlink()
    • updateEmail()
    • updatePassword()
    • updatePhoneNumber()
    • updateProfile()

وضعیت احراز هویت پایدار

SDKهای Firebase برای همه پلتفرم‌ها برای اطمینان از اینکه وضعیت احراز هویت کاربر در طول راه‌اندازی مجدد برنامه یا بارگذاری مجدد صفحه ادامه دارد، پشتیبانی خارج از جعبه را فراهم می‌کند.

در پلتفرم‌های بومی مانند Android و iOS، این رفتار قابل تنظیم نیست و وضعیت احراز هویت کاربر بین راه‌اندازی مجدد برنامه در دستگاه باقی می‌ماند. کاربر می‌تواند داده‌های ذخیره‌شده برنامه‌ها را با استفاده از تنظیمات دستگاه پاک کند، که هر حالت موجود ذخیره شده را پاک می‌کند.

در پلتفرم‌های وب، وضعیت احراز هویت کاربر در IndexedDB ذخیره می‌شود. می‌توانید با استفاده از Persistence.LOCAL ، ماندگاری را برای ذخیره داده‌ها در حافظه محلی تغییر دهید. در صورت نیاز، می‌توانید این رفتار پیش‌فرض را تغییر دهید تا فقط وضعیت احراز هویت برای جلسه جاری باقی بماند یا اصلاً نباشد. برای پیکربندی این تنظیمات، روش زیر را فراخوانی کنید FirebaseAuth.instanceFor(app: Firebase.app(), persistence: Persistence.LOCAL); . همچنان می‌توانید ماندگاری را برای هر نمونه Auth با استفاده از setPersistence(Persistence.NONE) کنید.

// Disable persistence on web platforms. Must be called on initialization:
final auth = FirebaseAuth.instanceFor(app: Firebase.app(), persistence: Persistence.NONE);
// To change it after initialization, use `setPersistence()`:
await auth.setPersistence(Persistence.LOCAL);

مراحل بعدی

راهنماهای مربوط به ورود و ثبت نام کاربران با سرویس های هویت و احراز هویت پشتیبانی شده را بررسی کنید.