ফ্লটারে ফায়ারবেস প্রমাণীকরণের সাথে শুরু করুন

আপনার অ্যাপটি Firebase-এর সাথে সংযুক্ত করুন

যদি আপনি ইতিমধ্যেই Flutter-এর জন্য Firebase SDK গুলি ইনস্টল এবং আরম্ভ না করে থাকেন, তাহলে তা শুরু করুন।

আপনার অ্যাপে Firebase প্রমাণীকরণ যোগ করুন

  1. আপনার Flutter প্রকল্পের মূল থেকে, প্লাগইনটি ইনস্টল করতে নিম্নলিখিত কমান্ডটি চালান:

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

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

    import 'package:firebase_auth/firebase_auth.dart';
    

একটি প্রমাণীকরণ প্রদানকারী ব্যবহার করতে, আপনাকে Firebase কনসোলে এটি সক্ষম করতে হবে। আপনার অ্যাপের জন্য ইমেল/পাসওয়ার্ড সাইন-ইন এবং আপনার পছন্দের অন্য যেকোনো পরিচয় প্রদানকারী সক্ষম করতে Firebase প্রমাণীকরণ বিভাগের সাইন-ইন পদ্ধতি পৃষ্ঠায় যান।

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

আপনার অ্যাপ ব্যবহারকারীদের কীভাবে প্রমাণীকরণ করে তা নিয়ে কথা বলার আগে, আসুন প্রমাণীকরণ কার্যকারিতা প্রোটোটাইপ এবং পরীক্ষা করার জন্য আপনি যে সরঞ্জামগুলি ব্যবহার করতে পারেন তার একটি সেট পরিচয় করিয়ে দেই: ফায়ারবেস লোকাল এমুলেটর স্যুট। যদি আপনি প্রমাণীকরণ কৌশল এবং সরবরাহকারীদের মধ্যে একটি বেছে নিচ্ছেন, প্রমাণীকরণ এবং ফায়ারবেস সুরক্ষা নিয়ম ব্যবহার করে পাবলিক এবং প্রাইভেট ডেটা সহ বিভিন্ন ডেটা মডেল চেষ্টা করে দেখুন, অথবা সাইন-ইন 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);
    //...
    }
    

একটি বিস্তারিত নির্দেশিকা "Connect your app to the Authentication emulator" বিভাগে পাওয়া যাবে। আরও তথ্যের জন্য, Local Emulator Suite ভূমিকা দেখুন।

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

বর্তমান প্রমাণীকরণ অবস্থা পরীক্ষা করুন

Firebase Auth আপনার নতুন বা বিদ্যমান Flutter অ্যাপ্লিকেশনে সুরক্ষিত প্রমাণীকরণ সংহত করার জন্য অনেক পদ্ধতি এবং ইউটিলিটি প্রদান করে। অনেক ক্ষেত্রে, আপনার ব্যবহারকারীর প্রমাণীকরণ অবস্থা সম্পর্কে আপনাকে জানতে হবে, যেমন তারা লগ ইন করেছেন নাকি লগ আউট করেছেন।

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

প্রমাণীকরণের অবস্থা স্থায়ী হচ্ছে

সমস্ত প্ল্যাটফর্মের জন্য Firebase SDK গুলি অ্যাপ রিস্টার্ট বা পৃষ্ঠা পুনরায় লোডের সময় আপনার ব্যবহারকারীর প্রমাণীকরণের অবস্থা বজায় রাখার জন্য আউট অফ দ্য বক্স সহায়তা প্রদান করে।

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

ওয়েব প্ল্যাটফর্মগুলিতে, ব্যবহারকারীর প্রমাণীকরণ অবস্থা 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);

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

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