Apple প্ল্যাটফর্মে বেনামে Firebase দিয়ে প্রমাণীকরণ করুন

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

শুরু করার আগে

  1. ফায়ারবেস ডিপেন্ডেন্সিগুলো ইনস্টল ও পরিচালনা করতে সুইফট প্যাকেজ ম্যানেজার ব্যবহার করুন।

    1. Xcode-এ আপনার অ্যাপ প্রজেক্টটি খুলে, File > Add Packages- এ যান।
    2. অনুরোধ করা হলে, Firebase Apple প্ল্যাটফর্ম SDK রিপোজিটরিটি যোগ করুন:
    3.   https://github.com/firebase/firebase-ios-sdk.git
    4. Firebase Authentication লাইব্রেরিটি নির্বাচন করুন।
    5. আপনার টার্গেটের বিল্ড সেটিংসের ' Other Linker Flags' সেকশনে -ObjC ফ্ল্যাগটি যোগ করুন।
    6. কাজ শেষ হলে, Xcode স্বয়ংক্রিয়ভাবে ব্যাকগ্রাউন্ডে আপনার ডিপেন্ডেন্সিগুলো রিজলভ ও ডাউনলোড করা শুরু করবে।
  2. আপনি যদি এখনও আপনার অ্যাপটিকে আপনার ফায়ারবেস প্রজেক্টের সাথে সংযুক্ত না করে থাকেন, তাহলে Firebase কনসোল থেকে তা করে নিন।
  3. বেনামী প্রমাণীকরণ সক্ষম করুন:
    1. Firebase কনসোলে , Auth সেকশনটি খুলুন।
    2. সাইন-ইন পদ্ধতি পেজে, বেনামী সাইন-ইন পদ্ধতিটি সক্রিয় করুন।
    3. ঐচ্ছিক : আপনি যদি আপনার প্রজেক্টকে Firebase Authentication with Identity Platform এ আপগ্রেড করে থাকেন, তাহলে আপনি অটোমেটিক ক্লিন-আপ চালু করতে পারেন। আপনি যখন এই সেটিংটি চালু করবেন, তখন ৩০ দিনের বেশি পুরোনো অ্যানোনিমাস অ্যাকাউন্টগুলো স্বয়ংক্রিয়ভাবে মুছে ফেলা হবে। যে প্রজেক্টগুলোতে অটোমেটিক ক্লিন-আপ চালু করা আছে, সেখানে অ্যানোনিমাস অথেন্টিকেশন আর ব্যবহারের সীমা বা বিলিং কোটার জন্য গণনা করা হবে না। অটোমেটিক ক্লিন-আপ দেখুন।

ফায়ারবেস দিয়ে বেনামে প্রমাণীকরণ করুন

যখন কোনো সাইন-আউট করা ব্যবহারকারী Firebase-এর মাধ্যমে প্রমাণীকরণের প্রয়োজন এমন কোনো অ্যাপ ফিচার ব্যবহার করেন, তখন নিম্নলিখিত ধাপগুলি সম্পন্ন করে ব্যবহারকারীকে বেনামে সাইন ইন করুন:

  1. আপনার UIApplicationDelegateFirebaseCore মডিউলটি ইম্পোর্ট করুন, সেইসাথে আপনার অ্যাপ ডেলিগেট দ্বারা ব্যবহৃত অন্য যেকোনো Firebase মডিউলও ইম্পোর্ট করুন। উদাহরণস্বরূপ, Cloud Firestore এবং Authentication ব্যবহার করতে:

    SwiftUI

    import SwiftUI
    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    সুইফট

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    উদ্দেশ্য-সি

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  2. আপনার অ্যাপ ডেলিগেটের application(_:didFinishLaunchingWithOptions:) মেথডে একটি FirebaseApp শেয়ার্ড ইনস্ট্যান্স কনফিগার করুন:

    SwiftUI

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

    সুইফট

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

    উদ্দেশ্য-সি

    // Use Firebase library to configure APIs
    [FIRApp configure];
  3. আপনি যদি SwiftUI ব্যবহার করেন, তাহলে আপনাকে অবশ্যই একটি অ্যাপ্লিকেশন ডেলিগেট তৈরি করতে হবে এবং UIApplicationDelegateAdaptor বা NSApplicationDelegateAdaptor মাধ্যমে সেটিকে আপনার App struct-এর সাথে সংযুক্ত করতে হবে। আপনাকে অবশ্যই অ্যাপ ডেলিগেট সুইজলিং নিষ্ক্রিয় করতে হবে। আরও তথ্যের জন্য, SwiftUI নির্দেশাবলী দেখুন।

    SwiftUI

    @main
    struct YourApp: App {
      // register app delegate for Firebase setup
      @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate
    
      var body: some Scene {
        WindowGroup {
          NavigationView {
            ContentView()
          }
        }
      }
    }
          
  4. signInAnonymouslyWithCompletion: পদ্ধতিটি কল করুন:

    সুইফট

    Auth.auth().signInAnonymously { authResult, error in
      // ...
    }

    উদ্দেশ্য-সি

    [[FIRAuth auth] signInAnonymouslyWithCompletion:^(FIRAuthDataResult * _Nullable authResult,
                                                      NSError * _Nullable error) {
       // ...
     }];
  5. যদি ` signInAnonymouslyWithCompletion: ` মেথডটি কোনো ত্রুটি ছাড়াই সম্পন্ন হয়, তাহলে আপনি FIRAuthDataResult অবজেক্ট থেকে বেনামী ব্যবহারকারীর অ্যাকাউন্টের ডেটা পেতে পারেন:

    সুইফট

    guard let user = authResult?.user else { return }
    let isAnonymous = user.isAnonymous  // true
    let uid = user.uid

    উদ্দেশ্য-সি

    FIRUser *user = authResult.user;
    BOOL isAnonymous = user.anonymous;  // YES
    NSString *uid = user.uid;

একটি বেনামী অ্যাকাউন্টকে স্থায়ী অ্যাকাউন্টে রূপান্তর করুন

যখন কোনো অপরিচিত ব্যবহারকারী আপনার অ্যাপে সাইন আপ করেন, তখন আপনি হয়তো তাকে তার নতুন অ্যাকাউন্ট দিয়ে কাজ চালিয়ে যাওয়ার সুযোগ দিতে চাইতে পারেন—উদাহরণস্বরূপ, ব্যবহারকারী সাইন আপ করার আগে তার শপিং কার্টে যে আইটেমগুলো যোগ করেছিলেন, সেগুলো আপনি তার নতুন অ্যাকাউন্টের শপিং কার্টেও উপলব্ধ করতে চাইতে পারেন। এটি করার জন্য, নিম্নলিখিত ধাপগুলো সম্পন্ন করুন:

  1. যখন ব্যবহারকারী সাইন আপ করেন, তখন FIRAuth.signInWith মেথডগুলোর কোনো একটি কল করা পর্যন্ত (কিন্তু সেটি বাদে) ব্যবহারকারীর অথেনটিকেশন প্রোভাইডারের জন্য সাইন-ইন প্রক্রিয়াটি সম্পন্ন করুন। উদাহরণস্বরূপ, ব্যবহারকারীর গুগল আইডি টোকেন, ফেসবুক অ্যাক্সেস টোকেন, অথবা ইমেল অ্যাড্রেস এবং পাসওয়ার্ড সংগ্রহ করুন।
  2. নতুন অথেন্টিকেশন প্রোভাইডারের জন্য একটি FIRAuthCredential সংগ্রহ করুন:

    গুগল সাইন-ইন
    সুইফট
    guard
      let authentication = user?.authentication,
      let idToken = authentication.idToken
    else {
      return
    }
    
    let credential = GoogleAuthProvider.credential(withIDToken: idToken,
                                                   accessToken: authentication.accessToken)
    উদ্দেশ্য-সি
    FIRAuthCredential *credential =
    [FIRGoogleAuthProvider credentialWithIDToken:result.user.idToken.tokenString
                                     accessToken:result.user.accessToken.tokenString];
    ফেসবুক লগইন
    সুইফট
    let credential = FacebookAuthProvider
      .credential(withAccessToken: AccessToken.current!.tokenString)
    উদ্দেশ্য-সি
    FIRAuthCredential *credential = [FIRFacebookAuthProvider
        credentialWithAccessToken:[FBSDKAccessToken currentAccessToken].tokenString];
    ইমেল-পাসওয়ার্ড সাইন-ইন
    সুইফট
    let credential = EmailAuthProvider.credential(withEmail: email, password: password)
    উদ্দেশ্য-সি
    FIRAuthCredential *credential =
        [FIREmailAuthProvider credentialWithEmail:email
                                                 password:password];
  3. সাইন-ইন ব্যবহারকারীর linkWithCredential:completion: মেথডে FIRAuthCredential অবজেক্টটি পাস করুন:

    সুইফট
        user.link(with: credential) { authResult, error in
      // ...
    }
    }
    উদ্দেশ্য-সি
        [[FIRAuth auth].currentUser linkWithCredential:credential
        completion:^(FIRAuthDataResult *result, NSError *_Nullable error) {
      // ...
    }];

যদি ` linkWithCredential:completion: কলটি সফল হয়, তাহলে ব্যবহারকারীর নতুন অ্যাকাউন্টটি বেনামী অ্যাকাউন্টের Firebase ডেটা অ্যাক্সেস করতে পারবে।

স্বয়ংক্রিয় পরিষ্কার-পরিচ্ছন্নতা

আপনি যদি আপনার প্রজেক্টকে Firebase Authentication with Identity Platform এ আপগ্রেড করে থাকেন, তাহলে আপনি Firebase কনসোলে অটোমেটিক ক্লিন-আপ চালু করতে পারেন। এই ফিচারটি চালু করলে, আপনি ফায়ারবেসকে ৩০ দিনের বেশি পুরোনো অ্যানোনিমাস অ্যাকাউন্টগুলো স্বয়ংক্রিয়ভাবে মুছে ফেলার অনুমতি দেন। যেসব প্রজেক্টে অটোমেটিক ক্লিন-আপ চালু করা আছে, সেখানে অ্যানোনিমাস অথেন্টিকেশন ব্যবহারের সীমা বা বিলিং কোটার গণনায় অন্তর্ভুক্ত হবে না।

  • স্বয়ংক্রিয় পরিচ্ছন্নতা চালু করার পর তৈরি করা যেকোনো বেনামী অ্যাকাউন্ট, তৈরির ৩০ দিন পর যেকোনো সময় স্বয়ংক্রিয়ভাবে মুছে যেতে পারে।
  • স্বয়ংক্রিয় পরিষ্করণ চালু করার ৩০ দিন পর বিদ্যমান বেনামী অ্যাকাউন্টগুলো স্বয়ংক্রিয়ভাবে মুছে ফেলার জন্য যোগ্য বলে বিবেচিত হবে।
  • আপনি যদি স্বয়ংক্রিয় পরিষ্করণ বন্ধ করে দেন, তাহলে মুছে ফেলার জন্য নির্ধারিত যেকোনো বেনামী অ্যাকাউন্ট সেই নির্ধারিত অবস্থাতেই থাকবে।
  • আপনি যদি কোনো বেনামী অ্যাকাউন্টকে যেকোনো সাইন-ইন পদ্ধতির সাথে লিঙ্ক করে "আপগ্রেড" করেন, তাহলে অ্যাকাউন্টটি স্বয়ংক্রিয়ভাবে মুছে যাবে না।

এই ফিচারটি চালু করার আগে কতজন ব্যবহারকারী প্রভাবিত হবেন তা যদি আপনি দেখতে চান, এবং আপনার প্রজেক্টটি Firebase Authentication with Identity Platform এ আপগ্রেড করে থাকেন, তাহলে আপনি ‘ক্লাউড লগিং’ -এ is_anon দ্বারা ফিল্টার করতে পারেন।

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

এখন যেহেতু ব্যবহারকারীরা ফায়ারবেসের মাধ্যমে প্রমাণীকরণ করতে পারে, আপনি ফায়ারবেস রুলস ব্যবহার করে আপনার ফায়ারবেস ডাটাবেসে থাকা ডেটাতে তাদের অ্যাক্সেস নিয়ন্ত্রণ করতে পারেন।