Fireক্যের সাথে একটি ফোন নম্বর ব্যবহার করে ফায়ারবেস দিয়ে প্রমাণীকরণ করুন

আপনি ব্যবহারকারীর ফোনে একটি এসএমএস বার্তা পাঠিয়ে ব্যবহারকারীর সাইন ইন করতে Firebase প্রমাণীকরণ ব্যবহার করতে পারেন। ব্যবহারকারী এসএমএস বার্তায় থাকা এককালীন কোড ব্যবহার করে সাইন ইন করে।

এই নথিতে বর্ণনা করা হয়েছে কিভাবে Firebase SDK ব্যবহার করে একটি ফোন নম্বর সাইন-ইন প্রবাহ বাস্তবায়ন করতে হয়।

তুমি শুরু করার আগে

  1. আগে আপনি ব্যবহার করতে পারেন Firebase প্রমাণীকরণ , আপনি যোগ করতে হবে Firebase ইউনিটি SDK এর (বিশেষত FirebaseAuth.unitypackage আপনার ইউনিটি প্রকল্পে)।

    এই প্রাথমিক সেটআপ ধাপের জন্য বিস্তারিত নির্দেশাবলীর খুঁজুন আপনার ইউনিটি প্রকল্পে Firebase যোগ

  2. আপনি এখনও আপনার Firebase প্রকল্পে আপনার অ্যাপ সংযুক্ত না করে থাকেন, থেকে তা করতে Firebase কনসোল

আইওএস-এ, মনে রাখবেন যে ফোন নম্বর সাইন-ইন করার জন্য একটি ফিজিক্যাল ডিভাইস প্রয়োজন এবং এটি সিমুলেটরে কাজ করবে না।

নিরাপত্তা উদ্বেগ

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

আপনি যদি আপনার অ্যাপে ফোন নম্বর ভিত্তিক সাইন-ইন ব্যবহার করেন, তাহলে আপনাকে আরো নিরাপদ সাইন-ইন পদ্ধতির পাশাপাশি এটি অফার করা উচিত এবং ব্যবহারকারীদের ফোন নম্বর সাইন-ইন ব্যবহারের নিরাপত্তা ট্রেড অফ সম্পর্কে অবহিত করা উচিত।

আপনার Firebase প্রকল্পের জন্য ফোন নম্বর সাইন-ইন সক্ষম করুন

এসএমএসের মাধ্যমে ব্যবহারকারীদের সাইন ইন করতে, আপনাকে প্রথমে আপনার ফায়ারবেস প্রকল্পের জন্য ফোন নম্বর সাইন-ইন পদ্ধতি সক্ষম করতে হবে:

  1. ইন Firebase কনসোল , প্রমাণীকরণ অধ্যায় খুলুন।
  2. সাইন ইন করার পদ্ধতি পৃষ্ঠায়, ফোন নম্বর সাইন-ইন পদ্ধতি সক্ষম করুন।

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

APNs বিজ্ঞপ্তি পাওয়া শুরু করুন (শুধুমাত্র iOS)

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

ফায়ারবেস প্রমাণীকরণের সাথে ব্যবহারের জন্য APNs বিজ্ঞপ্তি সক্ষম করতে:

  1. Xcode সালে পুশ বিজ্ঞপ্তি সক্ষম আপনার প্রকল্পের জন্য।
  2. ফায়ারবেসে আপনার APNs সার্টিফিকেট আপলোড করুন। আপনার কি ইতিমধ্যে একটি APNS শংসাপত্র না থাকে তাহলে, এ একটি তৈরি করতে ভুলবেন না অ্যাপল ডেভেলপার সদস্য সেন্টার

    1. Firebase কনসোলে আপনার প্রকল্পের ভিতরে,, গিয়ার আইকন নির্বাচন প্রকল্প সেটিং নির্বাচন করুন, এবং তারপর ক্লাউড মেসেজিং ট্যাব নির্বাচন করুন।

    2. আপনার গঠন শংসাপত্র রয়েছে, আপনার উতপাদন শংসাপত্র, অথবা উভয় জন্য আপলোডের সার্টিফিকেট বোতাম নির্বাচন করুন। অন্তত একটি প্রয়োজন।

    3. প্রতিটি শংসাপত্রের জন্য, .p12 ফাইলটি নির্বাচন করুন এবং যদি থাকে তবে পাসওয়ার্ড দিন। নিশ্চিত করুন যে এই শংসাপত্রের বান্ডেল আইডি আপনার অ্যাপের বান্ডেল আইডির সাথে মেলে। সংরক্ষণ করুন নির্বাচন করুন।

ব্যবহারকারীর ফোনে একটি যাচাইকরণ কোড পাঠান

শুরু করতে ফোন নম্বর যে তাদের অনুরোধ জানানো তাদের ফোন নম্বর প্রদান সাইন-ইন, ব্যবহারকারী একটি ইন্টারফেস উপস্থিত, এবং তারপর কল PhoneAuthProvider.VerifyPhoneNumber অনুরোধ যে Firebase SMS এর মাধ্যমে ব্যবহারকারীর ফোন থেকে একটি প্রমাণীকরণ কোড পাঠাতে:

  1. ব্যবহারকারীর ফোন নম্বর পান।

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

  2. ফোন করুন PhoneAuthProvider.VerifyPhoneNumber , এটা ব্যবহারকারীর ফোন নম্বর ক্ষণস্থায়ী।
    PhoneAuthProvider provider = PhoneAuthProvider.GetInstance(firebaseAuth);
    provider.VerifyPhoneNumber(phoneNumber, phoneAuthTimeoutMs, null,
      verificationCompleted: (credential) => {
        // Auto-sms-retrieval or instant validation has succeeded (Android only).
        // There is no need to input the verification code.
        // `credential` can be used instead of calling GetCredential().
      },
      verificationFailed: (error) => {
        // The verification code was not sent.
        // `error` contains a human readable explanation of the problem.
      },
      codeSent: (id, token) => {
        // Verification code was successfully sent via SMS.
        // `id` contains the verification id that will need to passed in with
        // the code from the user when calling GetCredential().
        // `token` can be used if the user requests the code be sent again, to
        // tie the two requests together.
      },
      codeAutoRetrievalTimeout: (id) => {
        // Called when the auto-sms-retrieval has timed out, based on the given
        // timeout parameter.
        // `id` contains the verification id of the request that timed out.
      });
    
    আপনি কল যখন PhoneAuthProvider.VerifyPhoneNumber , Firebase,
    • (iOS- এ), আপনার অ্যাপে একটি নীরব পুশ বিজ্ঞপ্তি পাঠায়।
    • ফায়ারবেস নির্দিষ্ট ফোন নম্বরে একটি প্রমাণীকরণ কোড সম্বলিত একটি এসএমএস বার্তা পাঠায় এবং আপনার সমাপ্তি ফাংশনে একটি যাচাইকরণ আইডি প্রেরণ করে। ব্যবহারকারীর সাইন ইন করার জন্য আপনার যাচাইকরণ কোড এবং যাচাইকরণ আইডি উভয়ই প্রয়োজন হবে।
  3. যাচাইকরণ আইডি সংরক্ষণ করুন এবং আপনার অ্যাপ্লিকেশন লোড হলে এটি পুনরুদ্ধার করুন। এটি করে, আপনি নিশ্চিত করতে পারেন যে ব্যবহারকারীর সাইন-ইন প্রবাহ সম্পূর্ণ করার আগে আপনার অ্যাপটি বন্ধ হয়ে গেলে আপনার কাছে এখনও একটি বৈধ যাচাইকরণ আইডি আছে (উদাহরণস্বরূপ, এসএমএস অ্যাপে স্যুইচ করার সময়)।

    আপনি যেভাবেই চান ভেরিফিকেশন আইডি চালিয়ে যেতে পারেন। একটি সরল পথ সঙ্গে যাচাইকরণ আইডি রক্ষা করা UnityEngine.PlayerPrefs

জন্য পাস করতে কলব্যাক তাহলে codeSent বলা হয়, আপনি যখন তারা এসএমএস বার্তায় তা গ্রহণ যাচাইকরণ কোড টাইপ করতে ব্যবহারকারী সূচিত করে।

অন্যদিকে, যদি জন্য কলব্যাক verificationCompleted বলা হয়, তারপর স্বয়ংক্রিয় যাচাইকরণ সফল হয়েছে এবং আপনি এখন একটি থাকবে Credential যার সাহায্যে আপনি যেমন নীচে বর্ণিত ব্যবহার করতে পারেন।

ভেরিফিকেশন কোড দিয়ে ব্যবহারকারীর সাইন ইন করুন

ব্যবহারকারী SMS বার্তা থেকে যাচাইকরণ কোড সহ আপনার অ্যাপ্লিকেশন দ্বারা প্রদত্ত পর তৈরি করে ব্যবহারকারী সাইন ইন Credential যাচাইকরণ কোড এবং যাচাইকরণ আইডি থেকে বস্তু এবং যে বস্তুর ক্ষণস্থায়ী FirebaseAuth.SignInWithCredential

  1. ব্যবহারকারীর কাছ থেকে যাচাইকরণ কোড পান।
  2. একটি তৈরি করুন Credential যাচাইকরণ কোড এবং যাচাইকরণ আইডি থেকে অবজেক্ট।
    Credential credential =
        phoneAuthProvider.GetCredential(verificationId, verificationCode);
        
  3. ব্যবহারকারীর সাইন ইন করুন Credential বস্তু:
    auth.SignInWithCredentialAsync(credential).ContinueWith(task => {
      if (task.IsFaulted) {
        Debug.LogError("SignInWithCredentialAsync encountered an error: " +
                       task.Exception);
        return;
      }
    
      FirebaseUser newUser = task.Result;
      Debug.Log("User signed in successfully");
      // This should display the phone number.
      Debug.Log("Phone number: " + newUser.PhoneNumber);
      // The phone number providerID is 'phone'.
      Debug.Log("Phone provider ID: " + newUser.ProviderId);
    });
    

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

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

  • আপনার অ্যাপ্লিকেশান, আপনি থেকে ব্যবহারকারীর সাধারণ প্রোফাইল তথ্য পেতে পারেন Firebase.Auth.FirebaseUser বস্তু:

    Firebase.Auth.FirebaseUser user = auth.CurrentUser;
    if (user != null) {
      string name = user.DisplayName;
      string email = user.Email;
      System.Uri photo_url = user.PhotoUrl;
      // 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 User.TokenAsync() instead.
      string uid = user.UserId;
    }
    
  • আপনার Firebase রিয়েলটাইম ডাটাবেস এবং ক্লাউড স্টোরেজ সিকিউরিটি রুলস , আপনি পেতে পারেন সাইন ইন থেকে ব্যবহারকারী এর অনন্য ব্যবহারকারী আইডি auth পরিবর্তনশীল, এবং এটি ব্যবহার কোন ডেটা একটি ব্যবহারকারী অ্যাক্সেস করতে পারবেন নিয়ন্ত্রন করতে পারেন।

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

একটি ব্যবহারকারী সাইন আউট করতে, কল SignOut() :

auth.SignOut();