আপনি ব্যবহারকারীর ফোনে একটি SMS বার্তা পাঠিয়ে Firebase Authentication ব্যবহার করে সাইন ইন করতে পারেন। ব্যবহারকারী SMS বার্তায় থাকা একটি এককালীন কোড ব্যবহার করে সাইন ইন করেন।
এই ডকুমেন্টে Firebase SDK ব্যবহার করে ফোন নম্বর সাইন-ইন ফ্লো কীভাবে বাস্তবায়ন করা যায় তা বর্ণনা করা হয়েছে।
শুরু করার আগে
Firebase Authentication ব্যবহার করার আগে, আপনার Unity প্রজেক্টে Firebase Unity SDK (বিশেষ করে,
FirebaseAuth.unitypackage) যোগ করতে হবে।আপনার ইউনিটি প্রজেক্টে ফায়ারবেস যোগ করুন - এই প্রাথমিক সেটআপ ধাপগুলির জন্য বিস্তারিত নির্দেশাবলী খুঁজুন।
- যদি আপনি এখনও আপনার অ্যাপটি আপনার Firebase প্রকল্পের সাথে সংযুক্ত না করে থাকেন, তাহলে Firebase কনসোল থেকে তা করুন।
- ফোন নম্বর সাইন-ইনের জন্য প্ল্যাটফর্মের প্রয়োজনীয়তাগুলি বুঝুন:
- ফোন নম্বর সাইন-ইন শুধুমাত্র মোবাইল প্ল্যাটফর্মের জন্য।
- iOS-এ, ফোন নম্বর সাইন-ইন করার জন্য একটি ফিজিক্যাল ডিভাইসের প্রয়োজন হয় এবং এটি কোনও সিমুলেটরে কাজ করবে না।
নিরাপত্তা উদ্বেগ
শুধুমাত্র একটি ফোন নম্বর ব্যবহার করে প্রমাণীকরণ সুবিধাজনক হলেও, অন্যান্য উপলব্ধ পদ্ধতির তুলনায় কম নিরাপদ, কারণ একটি ফোন নম্বরের মালিকানা সহজেই ব্যবহারকারীদের মধ্যে স্থানান্তর করা যেতে পারে। এছাড়াও, একাধিক ব্যবহারকারীর প্রোফাইলযুক্ত ডিভাইসগুলিতে, যে কোনও ব্যবহারকারী যিনি SMS বার্তা পেতে পারেন তিনি ডিভাইসের ফোন নম্বর ব্যবহার করে একটি অ্যাকাউন্টে সাইন ইন করতে পারেন।
যদি আপনি আপনার অ্যাপে ফোন নম্বর ভিত্তিক সাইন-ইন ব্যবহার করেন, তাহলে আপনার এটি আরও নিরাপদ সাইন-ইন পদ্ধতির পাশাপাশি অফার করা উচিত এবং ব্যবহারকারীদের ফোন নম্বর সাইন-ইন ব্যবহারের নিরাপত্তা বিনিময় সম্পর্কে অবহিত করা উচিত।
আপনার Firebase প্রকল্পের জন্য ফোন নম্বর সাইন-ইন সক্ষম করুন
SMS এর মাধ্যমে ব্যবহারকারীদের সাইন ইন করতে, আপনাকে প্রথমে আপনার Firebase প্রকল্পের জন্য ফোন নম্বর সাইন-ইন পদ্ধতি সক্ষম করতে হবে:
- Firebase কনসোলে , প্রমাণীকরণ বিভাগটি খুলুন।
- সাইন-ইন পদ্ধতি পৃষ্ঠায়, ফোন নম্বর সাইন-ইন পদ্ধতি সক্ষম করুন।
- সেটিংস পৃষ্ঠায়, আপনি যে অঞ্চলগুলিতে SMS বার্তা প্রেরণের অনুমতি দিতে বা অস্বীকার করতে চান তার উপর একটি নীতি সেট করুন। নতুন প্রকল্পের জন্য, ডিফল্ট নীতি কোনও অঞ্চলকে অনুমতি দেয় না।
APN বিজ্ঞপ্তিগুলি পাওয়া শুরু করুন (শুধুমাত্র iOS)
iOS-এ ফোন নম্বর প্রমাণীকরণ ব্যবহার করার জন্য, আপনার অ্যাপটিকে অবশ্যই Firebase থেকে APN বিজ্ঞপ্তি পেতে সক্ষম হতে হবে। যখন আপনি কোনও ব্যবহারকারীর ফোন নম্বর দিয়ে প্রথমবারের মতো কোনও ডিভাইসে সাইন ইন করেন, তখন Firebase Authentication ডিভাইসে একটি নীরব পুশ বিজ্ঞপ্তি পাঠায় যাতে যাচাই করা যায় যে ফোন নম্বর সাইন-ইন অনুরোধটি আপনার অ্যাপ থেকে এসেছে। (এই কারণে, সিমুলেটরে ফোন নম্বর সাইন-ইন ব্যবহার করা যাবে না।)
Firebase Authentication সাথে ব্যবহারের জন্য APN বিজ্ঞপ্তিগুলি সক্ষম করতে:
- এক্সকোডে, আপনার প্রকল্পের জন্য পুশ বিজ্ঞপ্তি সক্ষম করুন ।
আপনার APN সার্টিফিকেট Firebase-এ আপলোড করুন। যদি আপনার কাছে ইতিমধ্যেই APN সার্টিফিকেট না থাকে, তাহলে Apple Developer Member Center- এ একটি তৈরি করতে ভুলবেন না।
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 নির্দিষ্ট ফোন নম্বরে একটি প্রমাণীকরণ কোড সম্বলিত একটি SMS বার্তা পাঠায় এবং আপনার সমাপ্তি ফাংশনে একটি যাচাইকরণ আইডি প্রেরণ করে। ব্যবহারকারীকে সাইন ইন করার জন্য আপনার যাচাইকরণ কোড এবং যাচাইকরণ আইডি উভয়েরই প্রয়োজন হবে।
যাচাইকরণ আইডি সংরক্ষণ করুন এবং আপনার অ্যাপ লোড হলে এটি পুনরুদ্ধার করুন। এটি করার মাধ্যমে, আপনি নিশ্চিত করতে পারেন যে ব্যবহারকারী সাইন-ইন প্রবাহ সম্পূর্ণ করার আগে (উদাহরণস্বরূপ, SMS অ্যাপে স্যুইচ করার সময়) আপনার অ্যাপটি বন্ধ হয়ে গেলেও আপনার কাছে একটি বৈধ যাচাইকরণ আইডি রয়েছে।
আপনি যেকোনোভাবে যাচাইকরণ আইডিটি সংরক্ষণ করতে পারেন। একটি সহজ উপায় হল
UnityEngine.PlayerPrefsদিয়ে যাচাইকরণ আইডি সংরক্ষণ করা।
যদি codeSent এ পাস করা কলব্যাকটি কল করা হয়, তাহলে ব্যবহারকারী যখন SMS বার্তায় যাচাইকরণ কোডটি পাবেন তখন আপনি তাকে এটি টাইপ করতে বলতে পারেন।
অন্যদিকে, যদি verificationCompleted এর জন্য কলব্যাক কল করা হয়, তাহলে স্বয়ংক্রিয় যাচাইকরণ সফল হয়েছে এবং আপনার কাছে এখন একটি PhoneAuthCredential থাকবে যা আপনি নীচে বর্ণিত হিসাবে ব্যবহার করতে পারবেন।
যাচাইকরণ কোড দিয়ে ব্যবহারকারীকে সাইন ইন করুন।
ব্যবহারকারী আপনার অ্যাপে SMS বার্তা থেকে যাচাইকরণ কোড সরবরাহ করার পরে, যাচাইকরণ কোড এবং যাচাইকরণ আইডি থেকে একটি 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 প্রকল্পের অংশ হিসাবে সংরক্ষণ করা হয় এবং ব্যবহারকারী যেভাবেই সাইন ইন করুক না কেন, আপনার প্রকল্পের প্রতিটি অ্যাপে একজন ব্যবহারকারীকে সনাক্ত করতে ব্যবহার করা যেতে পারে।
আপনার অ্যাপগুলিতে, আপনি
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();