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

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

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

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

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

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

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

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

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

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

    প্রমাণীকরণ অবস্থা শুনে, আপনি একটি ব্যবহারকারী ইন্টারফেস তৈরি করতে পারেন যা প্রমাণীকরণ অবস্থায় এই পরিবর্তনগুলিতে প্রতিক্রিয়া জানায়।

  • প্রমাণীকরণ ( signIn -) পদ্ধতি দ্বারা ফিরে আসা UserCredential অবজেক্ট: 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;
    }
}

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

আপনি একটি ব্যবহারকারীর মৌলিক প্রোফাইল তথ্য আপডেট করতে পারেন—ব্যবহারকারীর প্রদর্শন নাম এবং প্রোফাইল ফটো URL— update - পদ্ধতি সহ। যেমন:

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 সহায়তা কেন্দ্রে ইমেল টেমপ্লেট দেখুন।

একটি যাচাইকরণ ইমেল পাঠানোর সময় অ্যাপে পুনঃনির্দেশিত করতে একটি অবিরত 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 সহায়তা কেন্দ্রে ইমেল টেমপ্লেট দেখুন।

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

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

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

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

একটি ব্যবহারকারী মুছুন

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

await user?.delete();

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

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

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