ফ্লাটারে ফায়ারবেস অথেনটিকেশন ব্যবহার শুরু করুন

আপনার অ্যাপকে ফায়ারবেসের সাথে সংযুক্ত করুন

যদি আগে থেকে না করে থাকেন, তাহলে Flutter-এর জন্য Firebase SDK-গুলো ইনস্টল ও চালু করুন

আপনার অ্যাপে ফায়ারবেস অথেন্টিকেশন যোগ করুন

  1. আপনার ফ্লাটার প্রজেক্টের রুট থেকে প্লাগইনটি ইনস্টল করতে নিম্নলিখিত কমান্ডটি চালান:

    flutter pub add firebase_auth
    
  2. একবার সম্পন্ন হলে, আপনার ফ্লাটার অ্যাপ্লিকেশনটি পুনর্নির্মাণ করুন:

    flutter run
    
  3. আপনার ডার্ট কোডে প্লাগইনটি ইম্পোর্ট করুন:

    import 'package:firebase_auth/firebase_auth.dart';
    

একটি অথেনটিকেশন প্রোভাইডার ব্যবহার করতে, আপনাকে ফায়ারবেস কনসোলে এটি সক্রিয় করতে হবে। ইমেল/পাসওয়ার্ড সাইন-ইন এবং আপনার অ্যাপের জন্য প্রয়োজনীয় অন্য যেকোনো আইডেন্টিটি প্রোভাইডার সক্রিয় করতে, ফায়ারবেস অথেনটিকেশন বিভাগের 'সাইন-ইন মেথড' পৃষ্ঠায় যান।

(ঐচ্ছিক) ফায়ারবেস লোকাল এমুলেটর স্যুট দিয়ে প্রোটোটাইপ এবং পরীক্ষা করুন

আপনার অ্যাপ কীভাবে ব্যবহারকারীদের প্রমাণীকরণ করে, সে সম্পর্কে কথা বলার আগে, আসুন এমন কিছু টুলের সাথে পরিচিত হই যা আপনি প্রমাণীকরণ কার্যকারিতার প্রোটোটাইপ তৈরি এবং পরীক্ষা করার জন্য ব্যবহার করতে পারেন: ফায়ারবেস লোকাল এমুলেটর স্যুট। আপনি যদি বিভিন্ন প্রমাণীকরণ কৌশল এবং প্রোভাইডারের মধ্যে সিদ্ধান্ত নিতে চান, প্রমাণীকরণ এবং ফায়ারবেস সিকিউরিটি রুলস ব্যবহার করে পাবলিক ও প্রাইভেট ডেটা সহ বিভিন্ন ডেটা মডেল পরীক্ষা করতে চান, অথবা সাইন-ইন UI ডিজাইনের প্রোটোটাইপ তৈরি করতে চান, তবে লাইভ সার্ভিস ডেপ্লয় না করে স্থানীয়ভাবে কাজ করতে পারাটা একটি দারুণ ব্যাপার হতে পারে।

অথেনটিকেশন এমুলেটর হলো লোকাল এমুলেটর স্যুটের একটি অংশ, যা আপনার অ্যাপকে এমুলেটেড ডেটাবেস কন্টেন্ট ও কনফিগের পাশাপাশি ঐচ্ছিকভাবে আপনার এমুলেটেড প্রোজেক্ট রিসোর্সগুলোর (ফাংশন, অন্যান্য ডেটাবেস এবং সিকিউরিটি রুলস) সাথে ইন্টারঅ্যাক্ট করতে সক্ষম করে।

অথেনটিকেশন এমুলেটর ব্যবহার করতে মাত্র কয়েকটি ধাপ অনুসরণ করতে হয়:

  1. এমুলেটরের সাথে সংযোগ করার জন্য আপনার অ্যাপের টেস্ট কনফিগ-এ একটি কোড লাইন যোগ করুন।

  2. আপনার স্থানীয় প্রজেক্ট ডিরেক্টরির রুট থেকে firebase emulators:start চালান।

  3. ইন্টারেক্টিভ প্রোটোটাইপিংয়ের জন্য লোকাল এমুলেটর স্যুট UI, অথবা নন-ইন্টারেক্টিভ টেস্টিংয়ের জন্য অথেনটিকেশন এমুলেটর REST API ব্যবহার করুন।

  4. এমুলেটরের ঠিকানা ও পোর্ট নির্দিষ্ট করতে useAuthEmulator() কল করুন:

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

আপনার অ্যাপকে অথেনটিকেশন এমুলেটরের সাথে সংযুক্ত করুন -এ একটি বিস্তারিত নির্দেশিকা পাওয়া যাবে। আরও তথ্যের জন্য, লোকাল এমুলেটর স্যুট পরিচিতি দেখুন।

এবার চলুন ব্যবহারকারীদের প্রমাণীকরণের পদ্ধতি নিয়ে আলোচনা করা যাক।

বর্তমান প্রমাণীকরণ অবস্থা যাচাই করুন

আপনার নতুন বা বিদ্যমান ফ্লাটার অ্যাপ্লিকেশনে সুরক্ষিত অথেন্টিকেশন সংহত করার জন্য ফায়ারবেস অথ অনেক মেথড এবং ইউটিলিটি প্রদান করে। অনেক ক্ষেত্রে, আপনার ব্যবহারকারীর অথেন্টিকেশন অবস্থা সম্পর্কে জানার প্রয়োজন হবে, যেমন তিনি লগ ইন করেছেন নাকি লগ আউট করেছেন।

Firebase Auth আপনাকে একটি Stream মাধ্যমে রিয়েলটাইমে এই স্টেটটি সাবস্ক্রাইব করার সুযোগ দেয়। একবার কল করা হলে, স্ট্রিমটি ব্যবহারকারীর বর্তমান অথেনটিকেশন স্টেটের একটি তাৎক্ষণিক ইভেন্ট প্রদান করে এবং এরপর যখনই অথেনটিকেশন স্টেট পরিবর্তিত হয়, তখন পরবর্তী ইভেন্টগুলোও প্রদান করে।

প্রমাণীকরণ অবস্থার পরিবর্তন শোনার তিনটি পদ্ধতি রয়েছে:

authStateChanges()

এই পরিবর্তনগুলি গ্রহণ করতে, আপনার FirebaseAuth ইনস্ট্যান্সে authStateChanges() মেথডটি কল করুন:

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

নিম্নলিখিত ঘটনা ঘটলে ইভেন্টগুলি ট্রিগার হয়:

  • শ্রোতা নিবন্ধিত হওয়ার ঠিক পরেই।
  • যখন কোনো ব্যবহারকারী সাইন ইন করেন।
  • যখন বর্তমান ব্যবহারকারী সাইন আউট করেন।

idTokenChanges()

এই পরিবর্তনগুলি গ্রহণ করতে, আপনার FirebaseAuth ইনস্ট্যান্সে idTokenChanges() মেথডটি কল করুন:

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

নিম্নলিখিত ঘটনা ঘটলে ইভেন্টগুলি ট্রিগার হয়:

  • শ্রোতা নিবন্ধিত হওয়ার ঠিক পরেই।
  • যখন কোনো ব্যবহারকারী সাইন ইন করেন।
  • যখন বর্তমান ব্যবহারকারী সাইন আউট করেন।
  • যখন বর্তমান ব্যবহারকারীর টোকেনে কোনো পরিবর্তন হয়।

userChanges()

এই পরিবর্তনগুলি গ্রহণ করতে, আপনার FirebaseAuth ইনস্ট্যান্সে userChanges() মেথডটি কল করুন:

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()

স্থায়ী প্রমাণীকরণ অবস্থা

সকল প্ল্যাটফর্মের জন্য ফায়ারবেস এসডিকে-গুলোতে এমন বিল্ট-ইন সাপোর্ট রয়েছে যা অ্যাপ রিস্টার্ট বা পেজ রিলোডের পরেও আপনার ব্যবহারকারীর অথেনটিকেশন স্টেট অক্ষুণ্ণ রাখে।

অ্যান্ড্রয়েড ও আইওএস-এর মতো নেটিভ প্ল্যাটফর্মগুলিতে এই আচরণটি কনফিগার করা যায় না এবং অ্যাপটি পুনরায় চালু করার পরেও ব্যবহারকারীর অথেনটিকেশন স্টেট ডিভাইসে সংরক্ষিত থাকে। ব্যবহারকারী ডিভাইসের সেটিংস ব্যবহার করে অ্যাপের ক্যাশ করা ডেটা মুছে ফেলতে পারেন, যা সংরক্ষিত যেকোনো বিদ্যমান স্টেট মুছে দেবে।

ওয়েব প্ল্যাটফর্মগুলিতে, ব্যবহারকারীর অথেনটিকেশন স্টেট IndexedDB- তে সংরক্ষিত থাকে। আপনি Persistence.LOCAL ব্যবহার করে ডেটা লোকাল স্টোরেজে সংরক্ষণ করার জন্য পার্সিস্টেন্স পরিবর্তন করতে পারেন। প্রয়োজন হলে, আপনি এই ডিফল্ট আচরণটি পরিবর্তন করে শুধুমাত্র বর্তমান সেশনের জন্য অথেনটিকেশন স্টেট পার্সিস্ট করতে পারেন, অথবা একেবারেই না করতে পারেন। এই সেটিংস কনফিগার করতে, নিম্নলিখিত মেথডটি কল করুন FirebaseAuth.instanceFor(app: Firebase.app(), persistence: Persistence.LOCAL); আপনি setPersistence(Persistence.NONE) ব্যবহার করে প্রতিটি Auth ইনস্ট্যান্সের জন্য পার্সিস্টেন্স আপডেট করতে পারেন।

// 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);

পরবর্তী পদক্ষেপ

সমর্থিত পরিচয় এবং প্রমাণীকরণ পরিষেবাগুলির মাধ্যমে ব্যবহারকারীদের সাইন ইন ও সাইন আপ করার নির্দেশিকাগুলি দেখুন।