Apple প্ল্যাটফর্মে Firebase যাচাইকরণ ব্যবহার শুরু করা

আপনি Firebase Authentication ব্যবহার করে ব্যবহারকারীদের আপনার অ্যাপে সাইন-ইন করার অনুমতি দিতে পারেন। এর মধ্যে ইমেল আইডি ও পাসওয়ার্ড দিয়ে সাইন-ইন করা এবং Google সাইন-ইন ও Facebook লগ-ইনের মতো ফেডারেটেড আইডেন্টিটি প্রদানকারী সহ এক বা একাধিক সাইন-ইন পদ্ধতি অন্তর্ভুক্ত। এই টিউটোরিয়াল আপনাকে Firebase Authentication-এর সাথে শুরু করতে সাহায্য করে। এটি আপনাকে দেখায় যে কীভাবে আপনার অ্যাপে ইমেল আইডি ও পাসওয়ার্ড দিয়ে সাইন-ইন করার সুবিধা যোগ করতে হয়।

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

  1. Firebase SDK ইনস্টল করুন।
  2. Firebase কনসোলে, আপনার Firebase প্রোজেক্টে অ্যাপ যোগ করুন।

আপনার অ্যাপে Firebase Authentication যোগ করা

Firebase ডিপেন্ডেন্সি ইনস্টল ও ম্যানেজ করতে Swift Package Manager ব্যবহার করুন।

  1. Xcode-এ, আপনার অ্যাপ প্রোজেক্ট খোলা থাকা অবস্থায়, ফাইল > প্যাকেজ যোগ করুন বিকল্পে নেভিগেট করুন।
  2. প্রম্পট করা হলে, Firebase Apple প্ল্যাটফর্ম SDK রিপোজিটরি যোগ করুন:
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. Firebase Authentication লাইব্রেরি বেছে নিন।
  5. আপনার টার্গেটের বিল্ড সেটিংসের অন্যান্য লিঙ্কার ফ্ল্যাগ বিভাগে -ObjC ফ্ল্যাগ যোগ করুন।
  6. এটি সম্পূর্ণ হয়ে গেলে, Xcode অটোমেটিক আপনার ডিপেন্ডেন্সি ব্যাকগ্রাউন্ডে সমাধান ও ডাউনলোড করা শুরু করবে।

(ঐচ্ছিক) Firebase Local Emulator Suite-এর সাথে প্রোটোটাইপ ও পরীক্ষা করুন

আপনার অ্যাপ কীভাবে ব্যবহারকারীদের যাচাই করে সেই বিষয়ে আলোচনা করার আগে, আসুন আমরা এমন কিছু টুল সম্পর্কে জেনে নিই যা আপনি Authentication কার্যকারিতা প্রোটোটাইপ ও টেস্ট করার জন্য ব্যবহার করতে পারেন: Firebase Local Emulator Suite. আপনি যদি যাচাইকরণ পদ্ধতি ও পরিষেবা প্রদানকারীর মধ্যে সিদ্ধান্ত নিতে চান, Authentication ও Firebase Security Rules ব্যবহার করে পাবলিক ও ব্যক্তিগত ডেটা দিয়ে বিভিন্ন ডেটা মডেল চেষ্টা করে দেখতে চান অথবা সাইন-ইন UI ডিজাইন প্রোটোটাইপ করতে চান, তাহলে লাইভ পরিষেবা ডেপ্লয় না করেই লোকালি কাজ করতে পারাটা খুব ভাল আইডিয়া হতে পারে।

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

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

  1. ইমুলেটরের সাথে কানেক্ট করার জন্য আপনার অ্যাপের টেস্ট কনফিগে কোডের একটি লাইন যোগ করা।
  2. আপনার লোকাল প্রোজেক্ট ডিরেক্টরির রুট থেকে, firebase emulators:start রান করা হচ্ছে।
  3. ইন্টার‍্যাক্টিভ প্রোটোটাইপিংয়ের জন্য Local Emulator Suite UI ব্যবহার করে অথবা Authentication নন-ইন্টার‍্যাক্টিভ টেস্টিংয়ের জন্য এমুলেটর REST API ব্যবহার করে।

Authentication এমুলেটরে আপনার অ্যাপ কানেক্ট করুন লিঙ্কে বিস্তারিত নির্দেশিকা উপলভ্য আছে। আরও তথ্যের জন্য, Local Emulator Suite ভূমিকা দেখুন।

এখন কীভাবে ব্যবহারকারীদের যাচাই করতে হয় তা দেখা যাক।

Firebase SDK ইনিশিয়ালাইজ করা

আপনার অ্যাপ ডেলিগেটে, প্রথমে Firebase SDK ইমপোর্ট করুন:

Swift

import FirebaseCore

Objective-C

@import FirebaseCore;

তারপর, application:didFinishLaunchingWithOptions: পদ্ধতিতে, FirebaseApp অবজেক্ট ইনিশিয়ালাইজ করুন:

Swift

// Use Firebase library to configure APIs
FirebaseApp.configure()

Objective-C

// Use Firebase library to configure APIs
[FIRApp configure];

যাচাইকরণ স্ট্যাটাস সম্পর্কে শোনা

আপনার অ্যাপের প্রতিটি ভিউয়ের জন্য, সাইন-ইন করা ব্যবহারকারীর ব্যাপারে তথ্য প্রয়োজন হলে, FIRAuth অবজেক্টে একটি লিসনার অ্যাটাচ করুন। ব্যবহারকারীর সাইন-ইন স্ট্যাটাস পরিবর্তন হলে এই লিসনারকে কল করা হয়।

ভিউ কন্ট্রোলারের viewWillAppear পদ্ধতিতে লিসনার অ্যাটাচ করুন:

Swift

handle = Auth.auth().addStateDidChangeListener { auth, user in
  // ...
}

Objective-C

self.handle = [[FIRAuth auth]
    addAuthStateDidChangeListener:^(FIRAuth *_Nonnull auth, FIRUser *_Nullable user) {
      // ...
    }];

এবং ভিউ কন্ট্রোলারের viewWillDisappear পদ্ধতিতে লিসনারকে আলাদা করুন:

Swift

Auth.auth().removeStateDidChangeListener(handle!)

Objective-C

[[FIRAuth auth] removeAuthStateDidChangeListener:_handle];

নতুন ব্যবহারকারীদের সাইন-আপ করা

এমন একটি ফর্ম তৈরি করুন যা নতুন ব্যবহারকারীদের তাদের ইমেল আইডি এবং পাসওয়ার্ড ব্যবহার করে আপনার অ্যাপে রেজিস্টার করতে দেয়। ব্যবহারকারী ফর্ম পূরণ করলে, তার দেওয়া ইমেল আইডি ও পাসওয়ার্ড যাচাই করে নিন, তারপর সেগুলি createUser পদ্ধতিতে দিন:

Swift

Auth.auth().createUser(withEmail: email, password: password) { authResult, error in
  // ...
}

Objective-C

[[FIRAuth auth] createUserWithEmail:email
                           password:password
                         completion:^(FIRAuthDataResult * _Nullable authResult,
                                      NSError * _Nullable error) {
  // ...
}];

আগে থেকেই থাকা ব্যবহারকারীদের সাইন-ইন করা

এমন একটি ফর্ম তৈরি করুন যা আগে থেকে থাকা ব্যবহারকারীদের তাদের ইমেল আইডি ও পাসওয়ার্ড ব্যবহার করে সাইন-ইন করতে দেয়। ব্যবহারকারী ফর্ম পূরণ করলে, signIn মেথড কল করুন:

Swift

Auth.auth().signIn(withEmail: email, password: password) { [weak self] authResult, error in
  guard let strongSelf = self else { return }
  // ...
}

Objective-C

[[FIRAuth auth] signInWithEmail:self->_emailField.text
                       password:self->_passwordField.text
                     completion:^(FIRAuthDataResult * _Nullable authResult,
                                  NSError * _Nullable error) {
  // ...
}];

ব্যবহারকারীর তথ্য পাওয়া

ব্যবহারকারী সফলভাবে সাইন-ইন করার পরে, আপনি ব্যবহারকারী সম্পর্কে তথ্য পেতে পারেন। যেমন, আপনার যাচাইকরণ স্টেট লিসনারে:

Swift

if let user = user {
  // The user's ID, unique to the Firebase project.
  // Do NOT use this value to authenticate with your backend server,
  // if you have one. Use getTokenWithCompletion:completion: instead.
  let uid = user.uid
  let email = user.email
  let photoURL = user.photoURL
  var multiFactorString = "MultiFactor: "
  for info in user.multiFactor.enrolledFactors {
    multiFactorString += info.displayName ?? "[DispayName]"
    multiFactorString += " "
  }
  // ...
}

Objective-C

if (user) {
  // The user's ID, unique to the Firebase project.
  // Do NOT use this value to authenticate with your backend server,
  // if you have one. Use getTokenWithCompletion:completion: instead.
  NSString *email = user.email;
  NSString *uid = user.uid;
  NSMutableString *multiFactorString = [NSMutableString stringWithFormat:@"MultiFactor: "];
  for (FIRMultiFactorInfo *info in user.multiFactor.enrolledFactors) {
    [multiFactorString appendString:info.displayName];
    [multiFactorString appendString:@" "];
  }
  NSURL *photoURL = user.photoURL;
  // ...
}

পরবর্তী ধাপ

অন্যান্য পরিচয় প্রদানকারী ও বেনামী অতিথি অ্যাকাউন্টের জন্য কীভাবে সহায়তা যোগ করতে হয় তা জানুন: