Firebase-এ ব্যবহারকারীদের পরিচালনা করুন

একজন ব্যবহারকারী তৈরি করুন

আপনার ফায়ারবেস প্রকল্পে আপনি চারটি উপায়ে একটি নতুন ব্যবহারকারী তৈরি করতে পারেন:

  • createUserWithEmailAndPassword() পদ্ধতিটি কল করুন।
  • গুগল সাইন-ইন, ফেসবুক লগইন, অথবা অ্যাপলের মতো ফেডারেটেড পরিচয় প্রদানকারী ব্যবহার করে প্রথমবারের মতো একজন ব্যবহারকারীকে সাইন ইন করুন।

আপনি ব্যবহারকারী পৃষ্ঠায় Firebase কনসোলের প্রমাণীকরণ বিভাগ থেকে নতুন পাসওয়ার্ড-প্রমাণিত ব্যবহারকারী তৈরি করতে পারেন।

একজন ব্যবহারকারীর প্রোফাইল পান

ব্যবহারকারীর প্রোফাইল তথ্য পেতে, User এর বৈশিষ্ট্য ব্যবহার করুন। বর্তমান ব্যবহারকারীর প্রতিনিধিত্বকারী একটি User অবজেক্ট পাওয়ার তিনটি উপায় রয়েছে:

  • authStateChanges , idTokenChanges এবং userChanges স্ট্রিমগুলি: আপনার শ্রোতারা বর্তমান User পাবেন, অথবা যদি কোনও ব্যবহারকারী প্রমাণিত না হয় তবে null পাবেন:

    FirebaseAuth.instance
      .authStateChanges()
      .listen((User? user) {
        if (user != null) {
          print(user.uid);
        }
      });
    

    যখন অ্যাপটি শুরু হয়, তখন স্থানীয় স্টোরেজ থেকে ব্যবহারকারীর শংসাপত্র (যদি থাকে) পুনরুদ্ধার করার পরে একটি ইভেন্ট শুরু হয়, যার অর্থ হল ব্যবহারকারীর অবস্থা শুরু হওয়ার সাথে সাথে আপনার শ্রোতাদের সর্বদা কল করা হবে। তারপর, যখনই প্রমাণীকরণের অবস্থা পরিবর্তন হবে, আপডেট করা ব্যবহারকারীর অবস্থা সহ একটি নতুন ইভেন্ট উত্থাপিত হবে।

    প্রমাণীকরণ অবস্থা শুনে, আপনি এমন একটি ইউজার ইন্টারফেস তৈরি করতে পারেন যা প্রমাণীকরণ অবস্থার এই পরিবর্তনগুলিতে প্রতিক্রিয়া জানায়। authStateChanges().listen(...) সরাসরি কোনও উইজেটের বিল্ড পদ্ধতির ভিতরে রাখবেন না, কারণ এটি প্রতিটি পুনর্নির্মাণে একটি নতুন সাবস্ক্রিপশন তৈরি করবে। যদি আপনার auth অবস্থার প্রতিক্রিয়ায় UI আপডেট করার প্রয়োজন হয়, তাহলে StreamBuilder ব্যবহার করুন:

    StreamBuilder<User?>(
    stream: FirebaseAuth.instance.authStateChanges(),
    builder: (BuildContext context, AsyncSnapshot<User?> snapshot) {
      if (snapshot.hasError) {
        return const Text('Something went wrong');
      }
    
      if (snapshot.connectionState == ConnectionState.waiting) {
        return const Text("Loading...");
      }
    
      if (!snapshot.hasData) {
        return const SignInScreen();
      }
    
      final user = snapshot.data!;
      return HomeScreen(userId: user.uid);
    },
    )
    

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

  • UserCredential অবজেক্টটি প্রমাণীকরণ ( signIn - ) পদ্ধতি দ্বারা ফেরত পাঠানো হয়েছে: UserCredential অবজেক্টের বর্তমান User সহ একটি user সম্পত্তি রয়েছে:

    final userCredential =
        await FirebaseAuth.instance.signInWithCredential(credential);
    final user = userCredential.user;
    print(user?.uid);
    
  • FirebaseAuth ইনস্ট্যান্সের currentUser প্রপার্টি: যদি আপনি নিশ্চিত হন যে ব্যবহারকারী বর্তমানে সাইন-ইন আছেন, তাহলে আপনি currentUser প্রপার্টি থেকে User অ্যাক্সেস করতে পারবেন:

    if (FirebaseAuth.instance.currentUser != null) {
      print(FirebaseAuth.instance.currentUser?.uid);
    }
    

    দুটি কারণে currentUser null হতে পারে:

    • ব্যবহারকারী সাইন ইন করেননি।
    • auth অবজেক্টটি এখনও শুরু করা শেষ হয়নি। ব্যবহারকারীর সাইন-ইন স্ট্যাটাস ট্র্যাক করার জন্য যদি আপনি একটি লিসেনার ব্যবহার করেন, তাহলে আপনাকে এই কেসটি পরিচালনা করতে হবে না।

ব্যবহারকারীর প্রদানকারী-নির্দিষ্ট প্রোফাইল তথ্য পান

ব্যবহারকারীর সাথে লিঙ্ক করা সাইন-ইন প্রদানকারীদের থেকে প্রোফাইল তথ্য পুনরুদ্ধার করতে, providerData সম্পত্তি ব্যবহার করুন। উদাহরণস্বরূপ:

if (user != null) {
    for (final providerProfile in user.providerData) {
        // ID of the provider (google.com, apple.com, etc.)
        final provider = providerProfile.providerId;

        // UID specific to the provider
        final uid = providerProfile.uid;

        // Name, email address, and profile photo URL
        final name = providerProfile.displayName;
        final emailAddress = providerProfile.email;
        final profilePhoto = providerProfile.photoURL;
    }
}

একজন ব্যবহারকারীর প্রোফাইল আপডেট করুন

আপনি update - পদ্ধতিগুলি ব্যবহার করে একজন ব্যবহারকারীর মৌলিক প্রোফাইল তথ্য—ব্যবহারকারীর প্রদর্শন নাম এবং প্রোফাইল ছবির URL—হালনাগাদ করতে পারেন। উদাহরণস্বরূপ:

await user?.updateDisplayName("Jane Q. User");
await user?.updatePhotoURL("https://example.com/jane-q-user/profile.jpg");

একজন ব্যবহারকারীর ইমেল ঠিকানা সেট করুন

আপনি updateEmail() পদ্ধতি ব্যবহার করে একজন ব্যবহারকারীর ইমেল ঠিকানা সেট করতে পারেন। উদাহরণস্বরূপ:

await user?.updateEmail("janeq@example.com");

একজন ব্যবহারকারীকে একটি যাচাইকরণ ইমেল পাঠান

আপনি sendEmailVerification() পদ্ধতি ব্যবহার করে একজন ব্যবহারকারীকে একটি ঠিকানা যাচাইকরণ ইমেল পাঠাতে পারেন। উদাহরণস্বরূপ:

await user?.sendEmailVerification();

আপনি Firebase কনসোলের প্রমাণীকরণ বিভাগে ব্যবহৃত ইমেল টেমপ্লেটটি ইমেল টেমপ্লেট পৃষ্ঠায় কাস্টমাইজ করতে পারেন। Firebase সহায়তা কেন্দ্রে ইমেল টেমপ্লেট দেখুন।

যাচাইকরণ ইমেল পাঠানোর সময় অ্যাপে পুনঃনির্দেশিত করার জন্য একটি continue URL এর মাধ্যমে স্টেট পাস করাও সম্ভব।

এছাড়াও, আপনি ইমেল পাঠানোর আগে Auth ইনস্ট্যান্সে ভাষা কোড আপডেট করে যাচাইকরণ ইমেলটি স্থানীয়করণ করতে পারেন। উদাহরণস্বরূপ:

await FirebaseAuth.instance.setLanguageCode("fr");
await user?.sendEmailVerification();

ব্যবহারকারীর পাসওয়ার্ড সেট করুন

আপনি updatePassword() পদ্ধতি ব্যবহার করে একজন ব্যবহারকারীর পাসওয়ার্ড সেট করতে পারেন। উদাহরণস্বরূপ:

await user?.updatePassword(newPassword);

একটি পাসওয়ার্ড রিসেট ইমেল পাঠান

আপনি sendPasswordResetEmail() পদ্ধতি ব্যবহার করে একজন ব্যবহারকারীকে পাসওয়ার্ড রিসেট ইমেল পাঠাতে পারেন। উদাহরণস্বরূপ:

await FirebaseAuth.instance
    .sendPasswordResetEmail(email: "user@example.com");

আপনি Firebase কনসোলের প্রমাণীকরণ বিভাগে ব্যবহৃত ইমেল টেমপ্লেটটি ইমেল টেমপ্লেট পৃষ্ঠায় কাস্টমাইজ করতে পারেন। Firebase সহায়তা কেন্দ্রে ইমেল টেমপ্লেট দেখুন।

পাসওয়ার্ড রিসেট ইমেল পাঠানোর সময় অ্যাপে পুনঃনির্দেশিত করার জন্য একটি continue URL এর মাধ্যমে স্টেট পাস করাও সম্ভব।

এছাড়াও, আপনি ইমেল পাঠানোর আগে Auth ইনস্ট্যান্সে ভাষা কোড আপডেট করে পাসওয়ার্ড রিসেট ইমেলটি স্থানীয়করণ করতে পারেন। উদাহরণস্বরূপ:

await FirebaseAuth.instance.setLanguageCode("fr");

আপনি Firebase কনসোল থেকে পাসওয়ার্ড রিসেট ইমেলও পাঠাতে পারেন।

একজন ব্যবহারকারীকে মুছে ফেলুন

আপনি delete() পদ্ধতি ব্যবহার করে একটি ব্যবহারকারীর অ্যাকাউন্ট মুছে ফেলতে পারেন। উদাহরণস্বরূপ:

await user?.delete();

আপনি ব্যবহারকারীদের পৃষ্ঠায় Firebase কনসোলের প্রমাণীকরণ বিভাগ থেকেও ব্যবহারকারীদের মুছে ফেলতে পারেন।

একজন ব্যবহারকারীকে পুনরায় প্রমাণীকরণ করুন

কিছু নিরাপত্তা-সংবেদনশীল পদক্ষেপ—যেমন অ্যাকাউন্ট মুছে ফেলা , একটি প্রাথমিক ইমেল ঠিকানা সেট করা এবং একটি পাসওয়ার্ড পরিবর্তন করা —ব্যবহারকারীকে সম্প্রতি সাইন ইন করা আবশ্যক। যদি আপনি এই পদক্ষেপগুলির মধ্যে একটি করেন এবং ব্যবহারকারী অনেক আগে সাইন ইন করেন, তাহলে পদক্ষেপটি ব্যর্থ হয় এবং requires-recent-login কোড সহ একটি FirebaseAuthException ছুঁড়ে দেয়। যখন এটি ঘটে, তখন ব্যবহারকারীর কাছ থেকে নতুন সাইন-ইন শংসাপত্রগুলি নিয়ে এবং reauthenticate জন্য শংসাপত্রগুলি পাস করে ব্যবহারকারীকে পুনরায় প্রমাণীকরণ করুন। উদাহরণস্বরূপ:

// Prompt the user to re-provide their sign-in credentials.
// Then, use the credentials to reauthenticate:
await user?.reauthenticateWithCredential(credential);

ব্যবহারকারীর অ্যাকাউন্ট আমদানি করুন

আপনি Firebase CLI এর auth:import কমান্ড ব্যবহার করে আপনার Firebase প্রকল্পে একটি ফাইল থেকে ব্যবহারকারী অ্যাকাউন্ট আমদানি করতে পারেন। উদাহরণস্বরূপ:

firebase auth:import users.json --hash-algo=scrypt --rounds=8 --mem-cost=14