আপনি ব্যবহারকারীর ফোনে একটি SMS বার্তা পাঠিয়ে ব্যবহারকারীকে সাইন ইন করতে Firebase Authentication ব্যবহার করতে পারেন। ব্যবহারকারী এসএমএস বার্তায় থাকা একটি এককালীন কোড ব্যবহার করে সাইন ইন করে।
এই দস্তাবেজটি বর্ণনা করে যে কীভাবে Firebase SDK ব্যবহার করে একটি ফোন নম্বর সাইন-ইন ফ্লো বাস্তবায়ন করতে হয়।
আপনি শুরু করার আগে
আপনি Firebase Authentication ব্যবহার করার আগে, আপনাকে আপনার ইউনিটি প্রকল্পে Firebase Unity SDK (বিশেষ করে,
FirebaseAuth.unitypackage
) যোগ করতে হবে।আপনার ইউনিটি প্রকল্পে ফায়ারবেস যুক্ত করুন -এ এই প্রাথমিক সেটআপ ধাপগুলির জন্য বিস্তারিত নির্দেশাবলী খুঁজুন।
- আপনি যদি এখনও আপনার অ্যাপটিকে আপনার Firebase প্রকল্পের সাথে সংযুক্ত না করে থাকেন, তাহলে Firebase কনসোল থেকে তা করুন৷
- ফোন নম্বর সাইন-ইন করার জন্য প্ল্যাটফর্মের প্রয়োজনীয়তাগুলি বুঝুন:
- ফোন নম্বর সাইন-ইন শুধুমাত্র মোবাইল প্ল্যাটফর্মের জন্য।
- iOS-এ, ফোন নম্বর সাইন-ইন করার জন্য একটি ফিজিক্যাল ডিভাইস প্রয়োজন এবং এটি কোনো সিমুলেটরে কাজ করবে না।
নিরাপত্তা উদ্বেগ
শুধুমাত্র একটি ফোন নম্বর ব্যবহার করে প্রমাণীকরণ, সুবিধাজনক হলেও, অন্যান্য উপলব্ধ পদ্ধতির তুলনায় কম নিরাপদ, কারণ একটি ফোন নম্বরের দখল ব্যবহারকারীদের মধ্যে সহজেই হস্তান্তর করা যেতে পারে। এছাড়াও, একাধিক ব্যবহারকারীর প্রোফাইল সহ ডিভাইসগুলিতে, যে কোনও ব্যবহারকারী যে এসএমএস বার্তাগুলি পেতে পারে সে ডিভাইসের ফোন নম্বর ব্যবহার করে একটি অ্যাকাউন্টে সাইন ইন করতে পারে৷
আপনি যদি আপনার অ্যাপে ফোন নম্বর ভিত্তিক সাইন-ইন ব্যবহার করেন, তাহলে আপনাকে আরও নিরাপদ সাইন-ইন পদ্ধতির পাশাপাশি এটি অফার করা উচিত এবং ফোন নম্বর সাইন-ইন ব্যবহার করার নিরাপত্তা ট্রেডঅফ সম্পর্কে ব্যবহারকারীদের জানানো উচিত।
আপনার Firebase প্রকল্পের জন্য ফোন নম্বর সাইন-ইন সক্ষম করুন
SMS এর মাধ্যমে ব্যবহারকারীদের সাইন ইন করতে, আপনাকে প্রথমে আপনার Firebase প্রকল্পের জন্য ফোন নম্বর সাইন-ইন পদ্ধতি সক্রিয় করতে হবে:
- Firebase কনসোলে , প্রমাণীকরণ বিভাগটি খুলুন।
- সাইন-ইন পদ্ধতি পৃষ্ঠায়, ফোন নম্বর সাইন-ইন পদ্ধতি সক্ষম করুন।
APN-এর বিজ্ঞপ্তি পাওয়া শুরু করুন (শুধুমাত্র iOS)
iOS-এ ফোন নম্বর প্রমাণীকরণ ব্যবহার করতে, আপনার অ্যাপকে অবশ্যই Firebase থেকে APN-এর বিজ্ঞপ্তি পেতে সক্ষম হতে হবে। আপনি যখন কোনও ব্যবহারকারীর ফোন নম্বর দিয়ে প্রথমবার কোনও ডিভাইসে সাইন ইন করেন, Firebase Authentication ডিভাইসে একটি নীরব পুশ বিজ্ঞপ্তি পাঠায় যে ফোন নম্বর সাইন-ইন অনুরোধটি আপনার অ্যাপ থেকে এসেছে তা যাচাই করতে। (এই কারণে, ফোন নম্বর সাইন-ইন একটি সিমুলেটরে ব্যবহার করা যাবে না।)
Firebase Authentication সাথে ব্যবহারের জন্য APN-এর বিজ্ঞপ্তি সক্ষম করতে:
- এক্সকোডে, আপনার প্রকল্পের জন্য পুশ বিজ্ঞপ্তিগুলি সক্ষম করুন ।
Firebase-এ আপনার APN-এর শংসাপত্র আপলোড করুন। আপনার যদি ইতিমধ্যেই একটি APNs শংসাপত্র না থাকে, তাহলে Apple বিকাশকারী সদস্য কেন্দ্রে একটি তৈরি করা নিশ্চিত করুন৷
Firebase কনসোলে আপনার প্রকল্পের ভিতরে, গিয়ার আইকন নির্বাচন করুন, প্রকল্প সেটিংস নির্বাচন করুন এবং তারপরে ক্লাউড মেসেজিং ট্যাবটি নির্বাচন করুন৷
আপনার ডেভেলপমেন্ট সার্টিফিকেট, আপনার প্রোডাকশন সার্টিফিকেট বা উভয়ের জন্য আপলোড সার্টিফিকেট বোতামটি নির্বাচন করুন। অন্তত একটি প্রয়োজন.
প্রতিটি শংসাপত্রের জন্য, .p12 ফাইলটি নির্বাচন করুন এবং পাসওয়ার্ড প্রদান করুন, যদি থাকে। নিশ্চিত করুন যে এই শংসাপত্রের বান্ডেল আইডি আপনার অ্যাপের বান্ডেল আইডির সাথে মেলে। সংরক্ষণ নির্বাচন করুন।
ব্যবহারকারীর ফোনে একটি যাচাইকরণ কোড পাঠান
ফোন নম্বর সাইন-ইন শুরু করতে, ব্যবহারকারীকে একটি ইন্টারফেস উপস্থাপন করুন যা তাদের ফোন নম্বর প্রদান করতে অনুরোধ করে, এবং তারপর PhoneAuthProvider.VerifyPhoneNumber
এ কল করে অনুরোধ করে যে Firebase ব্যবহারকারীর ফোনে SMS এর মাধ্যমে একটি প্রমাণীকরণ কোড পাঠাবে:
ব্যবহারকারীর ফোন নম্বর পান।
আইনি প্রয়োজনীয়তা পরিবর্তিত হয়, কিন্তু একটি সর্বোত্তম অনুশীলন হিসাবে এবং আপনার ব্যবহারকারীদের জন্য প্রত্যাশা সেট করার জন্য, আপনাকে তাদের জানানো উচিত যে যদি তারা ফোন সাইন-ইন ব্যবহার করে, তাহলে তারা যাচাইকরণের জন্য একটি SMS বার্তা পেতে পারে এবং মান দর প্রযোজ্য।
-
PhoneAuthProvider.VerifyPhoneNumber
এ কল করুন, এতে ব্যবহারকারীর ফোন নম্বর ধারণকারী একটি PhoneAuthOptions পাস করুন। আপনি যখনPhoneAuthProvider provider = PhoneAuthProvider.GetInstance(firebaseAuth); provider.VerifyPhoneNumber( new Firebase.Auth.PhoneAuthOptions { PhoneNumber = phoneNumber, TimeoutInMilliseconds = phoneAuthTimeoutMs, ForceResendingToken = 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-এ), আপনার অ্যাপে একটি নীরব পুশ বিজ্ঞপ্তি পাঠায়।
- Firebase নির্দিষ্ট ফোন নম্বরে একটি প্রমাণীকরণ কোড সহ একটি এসএমএস বার্তা পাঠায় এবং আপনার সমাপ্তি ফাংশনে একটি যাচাইকরণ আইডি পাস করে। ব্যবহারকারীকে সাইন ইন করতে আপনার যাচাইকরণ কোড এবং যাচাইকরণ আইডি উভয়েরই প্রয়োজন হবে৷
যাচাইকরণ আইডি সংরক্ষণ করুন এবং আপনার অ্যাপ লোড হয়ে গেলে এটি পুনরুদ্ধার করুন। এটি করার মাধ্যমে, আপনি নিশ্চিত করতে পারেন যে ব্যবহারকারীর সাইন-ইন ফ্লো সম্পূর্ণ করার আগে আপনার অ্যাপটি বন্ধ হয়ে গেলে আপনার কাছে এখনও একটি বৈধ যাচাইকরণ আইডি রয়েছে (উদাহরণস্বরূপ, এসএমএস অ্যাপে স্যুইচ করার সময়)।
আপনি যে কোনো উপায়ে যাচাইকরণ আইডি ধরে রাখতে পারেন। একটি সহজ উপায় হল
UnityEngine.PlayerPrefs
এর মাধ্যমে যাচাইকরণ আইডি সংরক্ষণ করা।
codeSent
পাস করা কলব্যাকটি কল করা হলে, আপনি ব্যবহারকারীকে এসএমএস বার্তায় যাচাইকরণ কোডটি টাইপ করার জন্য অনুরোধ করতে পারেন।
অন্যদিকে, যদি verificationCompleted
জন্য কলব্যাকটি সম্পূর্ণ হয়, তাহলে স্বয়ংক্রিয় যাচাইকরণ সফল হয়েছে এবং আপনার কাছে এখন একটি PhoneAuthCredential
থাকবে যা আপনি নীচে বর্ণিত হিসাবে ব্যবহার করতে পারেন৷
যাচাইকরণ কোড দিয়ে ব্যবহারকারীকে সাইন ইন করুন
ব্যবহারকারী আপনার অ্যাপটিকে এসএমএস বার্তা থেকে যাচাইকরণ কোড প্রদান করার পরে, যাচাইকরণ কোড এবং যাচাইকরণ আইডি থেকে একটি PhoneAuthCredential
অবজেক্ট তৈরি করে এবং সেই বস্তুটিকে FirebaseAuth.SignInAndRetrieveDataWithCredentialAsync
এ পাস করে ব্যবহারকারীকে সাইন ইন করুন।
- ব্যবহারকারীর কাছ থেকে যাচাইকরণ কোড পান।
- ভেরিফিকেশন কোড এবং ভেরিফিকেশন আইডি থেকে একটি
Credential
অবজেক্ট তৈরি করুন।PhoneAuthCredential credential = phoneAuthProvider.GetCredential(verificationId, verificationCode);
PhoneAuthCredential
অবজেক্ট দিয়ে ব্যবহারকারীকে সাইন ইন করুন:auth.SignInAndRetrieveDataWithCredentialAsync(credential).ContinueWith(task => { if (task.IsFaulted) { Debug.LogError("SignInAndRetrieveDataWithCredentialAsync encountered an error: " + task.Exception); return; } FirebaseUser newUser = task.Result.User; 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 Realtime Database এবং Cloud Storage সুরক্ষা নিয়মে , আপনি
auth
ভেরিয়েবল থেকে সাইন-ইন করা ব্যবহারকারীর অনন্য ব্যবহারকারী আইডি পেতে পারেন এবং ব্যবহারকারী কোন ডেটা অ্যাক্সেস করতে পারে তা নিয়ন্ত্রণ করতে এটি ব্যবহার করতে পারেন।
একজন ব্যবহারকারীকে সাইন আউট করতে, SignOut()
কল করুন :
auth.SignOut();