আপনি ব্যবহারকারীর ফোনে একটি SMS বার্তা পাঠিয়ে ব্যবহারকারীকে সাইন ইন করতে Firebase প্রমাণীকরণ ব্যবহার করতে পারেন। ব্যবহারকারী এসএমএস বার্তায় থাকা একটি এককালীন কোড ব্যবহার করে সাইন ইন করে।
আপনার অ্যাপে ফোন নম্বর সাইন-ইন যোগ করার সবচেয়ে সহজ উপায় হল FirebaseUI ব্যবহার করা, যার মধ্যে একটি ড্রপ-ইন সাইন-ইন উইজেট রয়েছে যা ফোন নম্বর সাইন-ইন করার জন্য সাইন-ইন প্রবাহ প্রয়োগ করে, সেইসাথে পাসওয়ার্ড-ভিত্তিক এবং ফেডারেটেড সাইন -ভিতরে. এই দস্তাবেজটি বর্ণনা করে যে কীভাবে Firebase SDK ব্যবহার করে একটি ফোন নম্বর সাইন-ইন ফ্লো বাস্তবায়ন করতে হয়।
তুমি শুরু করার আগে
- যদি আপনি ইতিমধ্যেই না করে থাকেন তাহলে আপনার Android প্রকল্পে Firebase যোগ করুন ।
- আপনার মডিউল (অ্যাপ-লেভেল) গ্রেডল ফাইলে (সাধারণত
<project>/<app-module>/build.gradle
), Firebase প্রমাণীকরণ অ্যান্ড্রয়েড লাইব্রেরির জন্য নির্ভরতা যোগ করুন। আমরা লাইব্রেরি সংস্করণ নিয়ন্ত্রণ করতে Firebase Android BoM ব্যবহার করার পরামর্শ দিই।Kotlin+KTX
dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:31.2.0') // Add the dependency for the Firebase Authentication library // When using the BoM, you don't specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-auth-ktx' }
Firebase Android BoM ব্যবহার করে, আপনার অ্যাপ সবসময় Firebase Android লাইব্রেরির সামঞ্জস্যপূর্ণ সংস্করণ ব্যবহার করবে।
(বিকল্প) BoM ব্যবহার না করে Firebase লাইব্রেরি নির্ভরতা যোগ করুন
আপনি যদি Firebase BoM ব্যবহার না করা বেছে নেন, তাহলে আপনাকে অবশ্যই প্রতিটি Firebase লাইব্রেরি সংস্করণ তার নির্ভরতা লাইনে উল্লেখ করতে হবে।
মনে রাখবেন যে আপনি যদি আপনার অ্যাপে একাধিক ফায়ারবেস লাইব্রেরি ব্যবহার করেন, আমরা দৃঢ়ভাবে লাইব্রেরি সংস্করণগুলি পরিচালনা করতে BoM ব্যবহার করার পরামর্শ দিই, যা নিশ্চিত করে যে সমস্ত সংস্করণ সামঞ্জস্যপূর্ণ।
dependencies { // Add the dependency for the Firebase Authentication library // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-auth-ktx:21.1.0' }
Java
dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:31.2.0') // Add the dependency for the Firebase Authentication library // When using the BoM, you don't specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-auth' }
Firebase Android BoM ব্যবহার করে, আপনার অ্যাপ সবসময় Firebase Android লাইব্রেরির সামঞ্জস্যপূর্ণ সংস্করণ ব্যবহার করবে।
(বিকল্প) BoM ব্যবহার না করে Firebase লাইব্রেরি নির্ভরতা যোগ করুন
আপনি যদি Firebase BoM ব্যবহার না করা বেছে নেন, তাহলে আপনাকে অবশ্যই প্রতিটি Firebase লাইব্রেরি সংস্করণ তার নির্ভরতা লাইনে উল্লেখ করতে হবে।
মনে রাখবেন যে আপনি যদি আপনার অ্যাপে একাধিক ফায়ারবেস লাইব্রেরি ব্যবহার করেন, আমরা দৃঢ়ভাবে লাইব্রেরি সংস্করণগুলি পরিচালনা করতে BoM ব্যবহার করার পরামর্শ দিই, যা নিশ্চিত করে যে সমস্ত সংস্করণ সামঞ্জস্যপূর্ণ।
dependencies { // Add the dependency for the Firebase Authentication library // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-auth:21.1.0' }
- আপনি যদি এখনও আপনার অ্যাপটিকে আপনার Firebase প্রকল্পের সাথে সংযুক্ত না করে থাকেন, তাহলে Firebase কনসোল থেকে তা করুন৷
- আপনি যদি ইতিমধ্যেই Firebase কনসোলে আপনার অ্যাপের SHA-1 হ্যাশ সেট না করে থাকেন তাহলে তা করুন৷ আপনার অ্যাপের SHA-1 হ্যাশ খোঁজার বিষয়ে তথ্যের জন্য আপনার ক্লায়েন্ট প্রমাণীকরণ দেখুন।
নিরাপত্তা উদ্বেগ
শুধুমাত্র একটি ফোন নম্বর ব্যবহার করে প্রমাণীকরণ, সুবিধাজনক হলেও, অন্যান্য উপলব্ধ পদ্ধতির তুলনায় কম নিরাপদ, কারণ একটি ফোন নম্বরের দখল ব্যবহারকারীদের মধ্যে সহজেই হস্তান্তর করা যেতে পারে। এছাড়াও, একাধিক ব্যবহারকারীর প্রোফাইল সহ ডিভাইসগুলিতে, যে কোনও ব্যবহারকারী যে এসএমএস বার্তাগুলি পেতে পারে সে ডিভাইসের ফোন নম্বর ব্যবহার করে একটি অ্যাকাউন্টে সাইন ইন করতে পারে৷
আপনি যদি আপনার অ্যাপে ফোন নম্বর ভিত্তিক সাইন-ইন ব্যবহার করেন, তাহলে আপনাকে আরও নিরাপদ সাইন-ইন পদ্ধতির পাশাপাশি এটি অফার করা উচিত এবং ফোন নম্বর সাইন-ইন ব্যবহার করার নিরাপত্তা ট্রেডঅফ সম্পর্কে ব্যবহারকারীদের জানানো উচিত।
আপনার Firebase প্রকল্পের জন্য ফোন নম্বর সাইন-ইন সক্ষম করুন
SMS এর মাধ্যমে ব্যবহারকারীদের সাইন ইন করতে, আপনাকে প্রথমে আপনার Firebase প্রকল্পের জন্য ফোন নম্বর সাইন-ইন পদ্ধতি সক্রিয় করতে হবে:
- Firebase কনসোলে , প্রমাণীকরণ বিভাগটি খুলুন।
- সাইন-ইন পদ্ধতি পৃষ্ঠায়, ফোন নম্বর সাইন-ইন পদ্ধতি সক্ষম করুন।
Firebase-এর ফোন নম্বর সাইন-ইন অনুরোধের কোটা যথেষ্ট বেশি যে বেশিরভাগ অ্যাপ প্রভাবিত হবে না। যাইহোক, যদি আপনাকে ফোন প্রমাণীকরণের মাধ্যমে খুব বেশি পরিমাণ ব্যবহারকারীদের সাইন ইন করতে হয়, তাহলে আপনাকে আপনার মূল্য পরিকল্পনা আপগ্রেড করতে হতে পারে। মূল্য পৃষ্ঠা দেখুন.
অ্যাপ যাচাইকরণ সক্ষম করুন
ফোন নম্বর প্রমাণীকরণ ব্যবহার করতে, Firebase অবশ্যই আপনার অ্যাপ থেকে ফোন নম্বর সাইন-ইন অনুরোধ আসছে তা যাচাই করতে সক্ষম হবে। ফায়ারবেস প্রমাণীকরণ দুটি উপায়ে এটি সম্পন্ন করে:
- SafetyNet : যদি একজন ব্যবহারকারীর Google Play পরিষেবা সহ একটি ডিভাইস ইনস্টল করা থাকে এবং Firebase প্রমাণীকরণ Android SafetyNet এর মাধ্যমে ডিভাইসটিকে বৈধ বলে যাচাই করতে পারে, তাহলে ফোন নম্বর সাইন-ইন এগিয়ে যেতে পারে।
- Google ক্লাউড কনসোলে, আপনার প্রকল্পের জন্য অ্যান্ড্রয়েড ডিভাইস যাচাইকরণ (অপ্রচলিত) API সক্ষম করুন৷ ডিফল্ট Firebase API কী ব্যবহার করা হবে, এবং DeviceCheck API অ্যাক্সেস করার অনুমতি দেওয়া প্রয়োজন।
- আপনি যদি এখনও আপনার অ্যাপের SHA-256 ফিঙ্গারপ্রিন্ট নির্দিষ্ট না করে থাকেন, তাহলে Firebase কনসোলের সেটিংস পৃষ্ঠা থেকে তা করুন৷ আপনার অ্যাপের SHA-256 ফিঙ্গারপ্রিন্ট কীভাবে পাবেন তার বিশদ বিবরণের জন্য আপনার ক্লায়েন্টকে প্রমাণীকরণ দেখুন।
- reCAPTCHA যাচাইকরণ : যে ক্ষেত্রে SafetyNet ব্যবহার করা যাবে না, যেমন ব্যবহারকারীর কাছে Google Play Services সমর্থন না থাকলে, অথবা একটি এমুলেটরে আপনার অ্যাপ পরীক্ষা করার সময়, Firebase প্রমাণীকরণ ফোন সাইন-ইন ফ্লো সম্পূর্ণ করতে একটি reCAPTCHA যাচাইকরণ ব্যবহার করে। reCAPTCHA চ্যালেঞ্জ প্রায়শই ব্যবহারকারীকে কিছু সমাধান না করেই সম্পন্ন করা যেতে পারে। দয়া করে মনে রাখবেন যে এই প্রবাহের জন্য আপনার অ্যাপ্লিকেশনের সাথে একটি SHA-1 যুক্ত থাকা প্রয়োজন৷ এই প্রবাহের জন্য আপনার API কীকে "${PROJECT_NAME}.firebaseapp.com"-এর জন্য সীমাবদ্ধ বা অনুমোদিত তালিকাভুক্ত হতে হবে।
Firebase প্রমাণীকরণের সাথে ব্যবহারের জন্য SafetyNet সক্ষম করতে:
ব্যবহারকারীর ফোনে একটি যাচাইকরণ কোড পাঠান
ফোন নম্বর সাইন-ইন শুরু করতে, ব্যবহারকারীকে একটি ইন্টারফেস উপস্থাপন করুন যা তাদের ফোন নম্বর টাইপ করতে অনুরোধ করে। আইনি প্রয়োজনীয়তা পরিবর্তিত হয়, কিন্তু একটি সর্বোত্তম অনুশীলন হিসাবে এবং আপনার ব্যবহারকারীদের জন্য প্রত্যাশা সেট করার জন্য, আপনাকে তাদের জানানো উচিত যে যদি তারা ফোন সাইন-ইন ব্যবহার করে, তাহলে তারা যাচাইকরণের জন্য একটি SMS বার্তা পেতে পারে এবং মান দর প্রযোজ্য।
তারপর, Firebase ব্যবহারকারীর ফোন নম্বর যাচাই করার অনুরোধ করতে তাদের ফোন নম্বরটি
PhoneAuthProvider.verifyPhoneNumber
পদ্ধতিতে পাঠান। উদাহরণ স্বরূপ:Kotlin+KTX
val options = PhoneAuthOptions.newBuilder(auth) .setPhoneNumber(phoneNumber) // Phone number to verify .setTimeout(60L, TimeUnit.SECONDS) // Timeout and unit .setActivity(this) // Activity (for callback binding) .setCallbacks(callbacks) // OnVerificationStateChangedCallbacks .build() PhoneAuthProvider.verifyPhoneNumber(options)
Java
PhoneAuthOptions options = PhoneAuthOptions.newBuilder(mAuth) .setPhoneNumber(phoneNumber) // Phone number to verify .setTimeout(60L, TimeUnit.SECONDS) // Timeout and unit .setActivity(this) // Activity (for callback binding) .setCallbacks(mCallbacks) // OnVerificationStateChangedCallbacks .build(); PhoneAuthProvider.verifyPhoneNumber(options);
verifyPhoneNumber
পদ্ধতিটি পুনঃপ্রবেশকারী: আপনি যদি এটিকে একাধিকবার কল করেন, যেমন একটি অ্যাক্টিভিটিরonStart
পদ্ধতিতে, আসল অনুরোধের সময় শেষ না হওয়া পর্যন্তverifyPhoneNumber
পদ্ধতিটি দ্বিতীয় এসএমএস পাঠাবে না।যদি ব্যবহারকারী সাইন ইন করার আগে আপনার অ্যাপ বন্ধ হয়ে যায় (উদাহরণস্বরূপ, ব্যবহারকারী যখন তাদের এসএমএস অ্যাপ ব্যবহার করছেন তখন) আপনি ফোন নম্বর সাইন ইন প্রক্রিয়া পুনরায় শুরু করতে এই আচরণটি ব্যবহার করতে পারেন। আপনি
verifyPhoneNumber
কল করার পরে, একটি পতাকা সেট করুন যা নির্দেশ করে যে যাচাইকরণ চলছে। তারপর, আপনার কার্যকলাপেরonSaveInstanceState
পদ্ধতিতে পতাকাটি সংরক্ষণ করুন এবংonRestoreInstanceState
এ পতাকাটি পুনরুদ্ধার করুন। অবশেষে, আপনার অ্যাক্টিভিটিরonStart
পদ্ধতিতে, যাচাইকরণ ইতিমধ্যেই চলছে কিনা তা পরীক্ষা করুন এবং যদি তাই হয়, আবারverifyPhoneNumber
এ কল করুন। যাচাইকরণ সম্পূর্ণ বা ব্যর্থ হলে পতাকাটি সাফ করতে ভুলবেন না ( যাচাই কলব্যাক দেখুন)।স্ক্রিন ঘূর্ণন এবং অ্যাক্টিভিটি রিস্টার্টের অন্যান্য দৃষ্টান্তগুলি সহজে পরিচালনা করতে, আপনার অ্যাক্টিভিটি
verifyPhoneNumber
পদ্ধতিতে পাস করুন। কার্যকলাপ বন্ধ হয়ে গেলে কলব্যাকগুলি স্বয়ংক্রিয়ভাবে বিচ্ছিন্ন হয়ে যাবে, যাতে আপনি কলব্যাক পদ্ধতিতে অবাধে UI ট্রানজিশন কোড লিখতে পারেন৷Firebase দ্বারা প্রেরিত এসএমএস বার্তাটি আপনার প্রমাণের উদাহরণে
setLanguageCode
পদ্ধতির মাধ্যমে প্রমাণীকরণ ভাষা নির্দিষ্ট করে স্থানীয়করণ করা যেতে পারে।Kotlin+KTX
auth.setLanguageCode("fr") // To apply the default app language instead of explicitly setting it. // auth.useAppLanguage()
Java
auth.setLanguageCode("fr"); // To apply the default app language instead of explicitly setting it. // auth.useAppLanguage();
আপনি যখন
PhoneAuthProvider.verifyPhoneNumber
কল করেন, তখন আপনাকে অবশ্যইOnVerificationStateChangedCallbacks
এর একটি উদাহরণ প্রদান করতে হবে, যাতে কলব্যাক ফাংশনগুলির বাস্তবায়ন রয়েছে যা অনুরোধের ফলাফলগুলি পরিচালনা করে৷ উদাহরণ স্বরূপ:Kotlin+KTX
callbacks = object : PhoneAuthProvider.OnVerificationStateChangedCallbacks() { override fun onVerificationCompleted(credential: PhoneAuthCredential) { // This callback will be invoked in two situations: // 1 - Instant verification. In some cases the phone number can be instantly // verified without needing to send or enter a verification code. // 2 - Auto-retrieval. On some devices Google Play services can automatically // detect the incoming verification SMS and perform verification without // user action. Log.d(TAG, "onVerificationCompleted:$credential") signInWithPhoneAuthCredential(credential) } override fun onVerificationFailed(e: FirebaseException) { // This callback is invoked in an invalid request for verification is made, // for instance if the the phone number format is not valid. Log.w(TAG, "onVerificationFailed", e) if (e is FirebaseAuthInvalidCredentialsException) { // Invalid request } else if (e is FirebaseTooManyRequestsException) { // The SMS quota for the project has been exceeded } // Show a message and update the UI } override fun onCodeSent( verificationId: String, token: PhoneAuthProvider.ForceResendingToken ) { // The SMS verification code has been sent to the provided phone number, we // now need to ask the user to enter the code and then construct a credential // by combining the code with a verification ID. Log.d(TAG, "onCodeSent:$verificationId") // Save verification ID and resending token so we can use them later storedVerificationId = verificationId resendToken = token } }
Java
mCallbacks = new PhoneAuthProvider.OnVerificationStateChangedCallbacks() { @Override public void onVerificationCompleted(PhoneAuthCredential credential) { // This callback will be invoked in two situations: // 1 - Instant verification. In some cases the phone number can be instantly // verified without needing to send or enter a verification code. // 2 - Auto-retrieval. On some devices Google Play services can automatically // detect the incoming verification SMS and perform verification without // user action. Log.d(TAG, "onVerificationCompleted:" + credential); signInWithPhoneAuthCredential(credential); } @Override public void onVerificationFailed(FirebaseException e) { // This callback is invoked in an invalid request for verification is made, // for instance if the the phone number format is not valid. Log.w(TAG, "onVerificationFailed", e); if (e instanceof FirebaseAuthInvalidCredentialsException) { // Invalid request } else if (e instanceof FirebaseTooManyRequestsException) { // The SMS quota for the project has been exceeded } // Show a message and update the UI } @Override public void onCodeSent(@NonNull String verificationId, @NonNull PhoneAuthProvider.ForceResendingToken token) { // The SMS verification code has been sent to the provided phone number, we // now need to ask the user to enter the code and then construct a credential // by combining the code with a verification ID. Log.d(TAG, "onCodeSent:" + verificationId); // Save verification ID and resending token so we can use them later mVerificationId = verificationId; mResendToken = token; } };
যাচাইকরণ কলব্যাক
বেশিরভাগ অ্যাপে, আপনি
onVerificationCompleted
,onVerificationFailed
, এবংonCodeSent
কলব্যাকগুলি প্রয়োগ করেন৷ আপনি আপনার অ্যাপের প্রয়োজনীয়তার উপর নির্ভর করেonCodeAutoRetrievalTimeOut
প্রয়োগ করতে পারেন।onVerification Completed(PhoneAuthCredential)
এই পদ্ধতি দুটি পরিস্থিতিতে বলা হয়:
- তাত্ক্ষণিক যাচাইকরণ: কিছু ক্ষেত্রে ফোন নম্বরটি যাচাইকরণ কোড পাঠাতে বা প্রবেশ করার প্রয়োজন ছাড়াই তাৎক্ষণিকভাবে যাচাই করা যেতে পারে।
- স্বতঃ-পুনরুদ্ধার: কিছু ডিভাইসে, Google Play পরিষেবাগুলি স্বয়ংক্রিয়ভাবে আগত যাচাইকরণ এসএমএস সনাক্ত করতে পারে এবং ব্যবহারকারীর পদক্ষেপ ছাড়াই যাচাইকরণ সম্পাদন করতে পারে। (এই ক্ষমতা কিছু ক্যারিয়ারের সাথে অনুপলব্ধ হতে পারে।) এটি SMS Retriever API ব্যবহার করে, যার মধ্যে SMS বার্তার শেষে একটি 11 অক্ষরের হ্যাশ রয়েছে।
PhoneAuthCredential
অবজেক্ট ব্যবহার করতে পারেন যা ব্যবহারকারীকে সাইন ইন করতে কলব্যাকে পাস করা হয়েছে।onVerificationFailed(FirebaseException)
এই পদ্ধতিটি একটি অবৈধ যাচাইকরণের অনুরোধের প্রতিক্রিয়া হিসাবে বলা হয়, যেমন একটি অনুরোধ যা একটি অবৈধ ফোন নম্বর বা যাচাইকরণ কোড নির্দিষ্ট করে৷
onCodeSent(স্ট্রিং যাচাইকরণ আইডি, PhoneAuthProvider.ForceResendingToken)
ঐচ্ছিক। প্রদত্ত ফোন নম্বরে এসএমএস দ্বারা যাচাইকরণ কোড পাঠানোর পরে এই পদ্ধতিটি বলা হয়৷
যখন এই পদ্ধতিটি বলা হয়, বেশিরভাগ অ্যাপ একটি UI প্রদর্শন করে যা ব্যবহারকারীকে SMS বার্তা থেকে যাচাইকরণ কোড টাইপ করতে অনুরোধ করে। (একই সময়ে, স্বয়ংক্রিয় যাচাইকরণ পটভূমিতে চলতে পারে।) তারপর, ব্যবহারকারী যাচাইকরণ কোড টাইপ করার পরে, আপনি যাচাইকরণ কোড এবং যাচাইকরণ আইডি ব্যবহার করতে পারেন যা একটি
PhoneAuthCredential
অবজেক্ট তৈরি করতে পদ্ধতিতে পাস করা হয়েছিল, যা আপনি পালাক্রমে ব্যবহারকারী সাইন ইন করতে ব্যবহার করতে পারেন. যাইহোক, কিছু অ্যাপ যাচাইকরণ কোড UI প্রদর্শন করার আগেonCodeAutoRetrievalTimeOut
না হওয়া পর্যন্ত অপেক্ষা করতে পারে (প্রস্তাবিত নয়)।onCodeAutoRetrievalTimeOut(স্ট্রিং যাচাইকরণ আইডি)
ঐচ্ছিক।
verifyPhoneNumber
করার জন্য নির্দিষ্ট সময়সীমা শেষ হওয়ার পর এই পদ্ধতিটিকে ডাকা হয় প্রথমেonVerificationCompleted
ট্রিগারিং ছাড়াই। SIM কার্ড ছাড়া ডিভাইসগুলিতে, এই পদ্ধতিটি অবিলম্বে বলা হয় কারণ SMS স্বয়ংক্রিয় পুনরুদ্ধার সম্ভব নয়৷কিছু অ্যাপ্লিকেশান স্বয়ংক্রিয় যাচাইকরণের সময়সীমা শেষ না হওয়া পর্যন্ত ব্যবহারকারীর ইনপুট ব্লক করে এবং শুধুমাত্র তখনই একটি UI প্রদর্শন করে যা ব্যবহারকারীকে SMS বার্তা থেকে যাচাইকরণ কোড টাইপ করতে অনুরোধ করে (প্রস্তাবিত নয়)।
একটি PhoneAuthCredential অবজেক্ট তৈরি করুন
ব্যবহারকারীর ফোনে Firebase যে যাচাইকরণ কোডটি পাঠিয়েছে সেটি ব্যবহারকারী প্রবেশ করার পরে, যাচাইকরণ কোড এবং
onCodeSent
বাonCodeAutoRetrievalTimeOut
কলব্যাকে পাস করা যাচাইকরণ আইডি ব্যবহার করে একটিPhoneAuthCredential
অবজেক্ট তৈরি করুন। (যখনonVerificationCompleted
বলা হয়, আপনি সরাসরি একটিPhoneAuthCredential
অবজেক্ট পাবেন, তাই আপনি এই ধাপটি এড়িয়ে যেতে পারেন।)PhoneAuthCredential
অবজেক্ট তৈরি করতে,PhoneAuthProvider.getCredential
কল করুন:Kotlin+KTX
val credential = PhoneAuthProvider.getCredential(verificationId!!, code)
Java
PhoneAuthCredential credential = PhoneAuthProvider.getCredential(verificationId, code);
ব্যবহারকারী সাইন ইন করুন
আপনি একটি
PhoneAuthCredential
অবজেক্ট পাওয়ার পরে, তাonVerificationCompleted
কলব্যাকে হোক বাPhoneAuthProvider.getCredential
এ কল করে,PhoneAuthCredential
অবজেক্টটিকেFirebaseAuth.signInWithCredential
এ পাস করে সাইন-ইন ফ্লো সম্পূর্ণ করুন:Kotlin+KTX
private fun signInWithPhoneAuthCredential(credential: PhoneAuthCredential) { auth.signInWithCredential(credential) .addOnCompleteListener(this) { task -> if (task.isSuccessful) { // Sign in success, update UI with the signed-in user's information Log.d(TAG, "signInWithCredential:success") val user = task.result?.user } else { // Sign in failed, display a message and update the UI Log.w(TAG, "signInWithCredential:failure", task.exception) if (task.exception is FirebaseAuthInvalidCredentialsException) { // The verification code entered was invalid } // Update UI } } }
Java
private void signInWithPhoneAuthCredential(PhoneAuthCredential credential) { mAuth.signInWithCredential(credential) .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if (task.isSuccessful()) { // Sign in success, update UI with the signed-in user's information Log.d(TAG, "signInWithCredential:success"); FirebaseUser user = task.getResult().getUser(); // Update UI } else { // Sign in failed, display a message and update the UI Log.w(TAG, "signInWithCredential:failure", task.getException()); if (task.getException() instanceof FirebaseAuthInvalidCredentialsException) { // The verification code entered was invalid } } } }); }
কাল্পনিক ফোন নম্বর দিয়ে পরীক্ষা করুন
আপনি Firebase কনসোলের মাধ্যমে ডেভেলপমেন্টের জন্য কাল্পনিক ফোন নম্বর সেট আপ করতে পারেন। কাল্পনিক ফোন নম্বর দিয়ে পরীক্ষা করা এই সুবিধাগুলি প্রদান করে:
- আপনার ব্যবহারের কোটা ব্যবহার না করে ফোন নম্বর প্রমাণীকরণ পরীক্ষা করুন।
- একটি প্রকৃত SMS বার্তা না পাঠিয়ে ফোন নম্বর প্রমাণীকরণ পরীক্ষা করুন।
- থ্রোটল না হয়ে একই ফোন নম্বর দিয়ে একটানা পরীক্ষা চালান। এটি অ্যাপ স্টোর পর্যালোচনা প্রক্রিয়া চলাকালীন প্রত্যাখ্যানের ঝুঁকি কমিয়ে দেয় যদি পর্যালোচক পরীক্ষার জন্য একই ফোন নম্বর ব্যবহার করেন।
- কোনও অতিরিক্ত প্রচেষ্টা ছাড়াই বিকাশের পরিবেশে সহজেই পরীক্ষা করুন, যেমন Google Play পরিষেবাগুলি ছাড়াই iOS সিমুলেটর বা Android এমুলেটরে বিকাশ করার ক্ষমতা।
- প্রোডাকশন এনভায়রনমেন্টে প্রকৃত ফোন নম্বরে সাধারণত প্রয়োগ করা নিরাপত্তা চেক দ্বারা ব্লক না হয়ে ইন্টিগ্রেশন পরীক্ষা লিখুন।
কাল্পনিক ফোন নম্বরগুলি অবশ্যই এই প্রয়োজনীয়তাগুলি পূরণ করবে:
- নিশ্চিত করুন যে আপনি এমন ফোন নম্বর ব্যবহার করছেন যা আসলেই কাল্পনিক, এবং ইতিমধ্যেই বিদ্যমান নেই। ফায়ারবেস প্রমাণীকরণ আপনাকে আসল ব্যবহারকারীদের দ্বারা ব্যবহৃত বিদ্যমান ফোন নম্বরগুলিকে পরীক্ষার নম্বর হিসাবে সেট করার অনুমতি দেয় না। একটি বিকল্প হল ইউএস টেস্ট ফোন নম্বর হিসাবে 555 প্রিফিক্সড নম্বর ব্যবহার করা, উদাহরণস্বরূপ: +1 650-555-3434
- দৈর্ঘ্য এবং অন্যান্য সীমাবদ্ধতার জন্য ফোন নম্বর সঠিকভাবে ফরম্যাট করতে হবে। তারা এখনও প্রকৃত ব্যবহারকারীর ফোন নম্বরের মতো একই বৈধতার মধ্য দিয়ে যাবে।
- আপনি বিকাশের জন্য 10টি পর্যন্ত ফোন নম্বর যোগ করতে পারেন৷
- পরীক্ষামূলক ফোন নম্বর/কোডগুলি ব্যবহার করুন যা অনুমান করা কঠিন এবং ঘন ঘন পরিবর্তন করুন।
কাল্পনিক ফোন নম্বর এবং যাচাইকরণ কোড তৈরি করুন
- Firebase কনসোলে , প্রমাণীকরণ বিভাগটি খুলুন।
- সাইন ইন পদ্ধতি ট্যাবে, ফোন প্রদানকারী সক্ষম করুন যদি আপনি ইতিমধ্যে না করে থাকেন।
- অ্যাকর্ডিয়ন মেনু পরীক্ষার জন্য ফোন নম্বর খুলুন।
- আপনি যে ফোন নম্বরটি পরীক্ষা করতে চান তা প্রদান করুন, উদাহরণস্বরূপ: +1 650-555-3434 ।
- সেই নির্দিষ্ট নম্বরের জন্য 6-সংখ্যার যাচাইকরণ কোড প্রদান করুন, উদাহরণস্বরূপ: 654321 ।
- নম্বর যোগ করুন। যদি প্রয়োজন হয়, আপনি ফোন নম্বর এবং এর কোডটি মুছে ফেলতে পারেন সংশ্লিষ্ট সারির উপর হোভার করে এবং ট্র্যাশ আইকনে ক্লিক করে।
ম্যানুয়াল পরীক্ষা
আপনি সরাসরি আপনার অ্যাপ্লিকেশনে একটি কাল্পনিক ফোন নম্বর ব্যবহার শুরু করতে পারেন। এটি আপনাকে কোটা সংক্রান্ত সমস্যা বা থ্রটলিং ছাড়াই বিকাশের পর্যায়ে ম্যানুয়াল টেস্টিং করতে দেয়। আপনি Google Play পরিষেবা ইনস্টল না করে সরাসরি iOS সিমুলেটর বা Android এমুলেটর থেকে পরীক্ষা করতে পারেন।
আপনি যখন কাল্পনিক ফোন নম্বর প্রদান করেন এবং যাচাইকরণ কোড পাঠান, তখন কোনো প্রকৃত SMS পাঠানো হয় না। পরিবর্তে, সাইন ইন সম্পূর্ণ করতে আপনাকে পূর্বে কনফিগার করা যাচাইকরণ কোড প্রদান করতে হবে।
সাইন-ইন সম্পূর্ণ হলে, সেই ফোন নম্বর দিয়ে একজন Firebase ব্যবহারকারী তৈরি করা হয়। ব্যবহারকারীর আসল ফোন নম্বর ব্যবহারকারীর মতো একই আচরণ এবং বৈশিষ্ট্য রয়েছে এবং একইভাবে রিয়েলটাইম ডেটাবেস/ক্লাউড ফায়ারস্টোর এবং অন্যান্য পরিষেবাগুলি অ্যাক্সেস করতে পারে। এই প্রক্রিয়ার সময় যে আইডি টোকেনটি মিন্ট করা হয়েছে তাতে একজন প্রকৃত ফোন নম্বর ব্যবহারকারীর মতোই স্বাক্ষর রয়েছে।
আরেকটি বিকল্প হল এই ব্যবহারকারীদের উপর কাস্টম দাবির মাধ্যমে একটি পরীক্ষার ভূমিকা সেট করা যাতে আপনি তাদের অ্যাক্সেসকে আরও সীমিত করতে চান তাহলে তাদের জাল ব্যবহারকারী হিসাবে আলাদা করতে পারেন।
পরীক্ষার জন্য ম্যানুয়ালি reCAPTCHA ফ্লো ট্রিগার করতে,
forceRecaptchaFlowForTesting()
পদ্ধতি ব্যবহার করুন।// Force reCAPTCHA flow FirebaseAuth.getInstance().getFirebaseAuthSettings().forceRecaptchaFlowForTesting();
ইন্টিগ্রেশন টেস্টিং
ম্যানুয়াল টেস্টিং ছাড়াও, Firebase প্রমাণীকরণ ফোন প্রমাণীকরণ পরীক্ষার জন্য ইন্টিগ্রেশন পরীক্ষা লিখতে সহায়তা করার জন্য API প্রদান করে। এই APIগুলি ওয়েবে reCAPTCHA প্রয়োজনীয়তা এবং iOS-এ নীরব পুশ বিজ্ঞপ্তিগুলি অক্ষম করে অ্যাপ যাচাইকরণ অক্ষম করে৷ এটি এই প্রবাহে অটোমেশন পরীক্ষাকে সম্ভব করে তোলে এবং বাস্তবায়ন করা সহজ করে তোলে। উপরন্তু, তারা Android এ তাৎক্ষণিক যাচাইকরণ প্রবাহ পরীক্ষা করার ক্ষমতা প্রদান করতে সাহায্য করে।
Android এ,
signInWithPhoneNumber
কলের আগেsetAppVerificationDisabledForTesting()
এ কল করুন। এটি স্বয়ংক্রিয়ভাবে অ্যাপ যাচাইকরণ অক্ষম করে, আপনাকে ফোন নম্বরটি ম্যানুয়ালি সমাধান না করে পাস করার অনুমতি দেয়৷ মনে রাখবেন যে যদিও reCAPTCHA এবং/অথবা SafetyNet অক্ষম করা হয়েছে, তবুও একটি বাস্তব ফোন নম্বর ব্যবহার করে সাইন ইন সম্পূর্ণ করতে ব্যর্থ হবে৷ শুধুমাত্র কাল্পনিক ফোন নম্বরগুলি এই API এর সাথে ব্যবহার করা যেতে পারে৷// Turn off phone auth app verification. FirebaseAuth.getInstance().getFirebaseAuthSettings() .setAppVerificationDisabledForTesting();
একটি কাল্পনিক নম্বর দিয়ে
verifyPhoneNumber
কল করাonCodeSent
কলব্যাককে ট্রিগার করে, যেখানে আপনাকে সংশ্লিষ্ট যাচাইকরণ কোড প্রদান করতে হবে। এটি Android এমুলেটরগুলিতে পরীক্ষার অনুমতি দেয়।Java
String phoneNum = "+16505554567"; String testVerificationCode = "123456"; // Whenever verification is triggered with the whitelisted number, // provided it is not set for auto-retrieval, onCodeSent will be triggered. FirebaseAuth auth = FirebaseAuth.getInstance(); PhoneAuthOptions options = PhoneAuthOptions.newBuilder(auth) .setPhoneNumber(phoneNum) .setTimeout(60L, TimeUnit.SECONDS) .setActivity(this) .setCallbacks(new PhoneAuthProvider.OnVerificationStateChangedCallbacks() { @Override public void onCodeSent(String verificationId, PhoneAuthProvider.ForceResendingToken forceResendingToken) { // Save the verification id somewhere // ... // The corresponding whitelisted code above should be used to complete sign-in. MainActivity.this.enableUserManuallyInputCode(); } @Override public void onVerificationCompleted(PhoneAuthCredential phoneAuthCredential) { // Sign in with the credential // ... } @Override public void onVerificationFailed(FirebaseException e) { // ... } }) .build(); PhoneAuthProvider.verifyPhoneNumber(options);
Kotlin+KTX
val phoneNum = "+16505554567" val testVerificationCode = "123456" // Whenever verification is triggered with the whitelisted number, // provided it is not set for auto-retrieval, onCodeSent will be triggered. val options = PhoneAuthOptions.newBuilder(Firebase.auth) .setPhoneNumber(phoneNum) .setTimeout(30L, TimeUnit.SECONDS) .setActivity(this) .setCallbacks(object : PhoneAuthProvider.OnVerificationStateChangedCallbacks() { override fun onCodeSent( verificationId: String, forceResendingToken: PhoneAuthProvider.ForceResendingToken ) { // Save the verification id somewhere // ... // The corresponding whitelisted code above should be used to complete sign-in. this@MainActivity.enableUserManuallyInputCode() } override fun onVerificationCompleted(phoneAuthCredential: PhoneAuthCredential) { // Sign in with the credential // ... } override fun onVerificationFailed(e: FirebaseException) { // ... } }) .build() PhoneAuthProvider.verifyPhoneNumber(options)
উপরন্তু, আপনি
setAutoRetrievedSmsCodeForPhoneNumber
কল করে স্বয়ংক্রিয় পুনরুদ্ধারের জন্য কাল্পনিক নম্বর এবং এর সংশ্লিষ্ট যাচাইকরণ কোড সেট করে Android-এ স্বতঃ-পুনরুদ্ধার প্রবাহ পরীক্ষা করতে পারেন।যখন
verifyPhoneNumber
করা হয়, তখন এটি সরাসরিonVerificationCompleted
এর সাথেPhoneAuthCredential
করে। এটি শুধুমাত্র কাল্পনিক ফোন নম্বরগুলির সাথে কাজ করে৷Google Play স্টোরে আপনার অ্যাপ্লিকেশন প্রকাশ করার সময় এটি অক্ষম করা আছে এবং আপনার অ্যাপে কোনো কাল্পনিক ফোন নম্বর হার্ডকোড করা নেই তা নিশ্চিত করুন।
Java
// The test phone number and code should be whitelisted in the console. String phoneNumber = "+16505554567"; String smsCode = "123456"; FirebaseAuth firebaseAuth = FirebaseAuth.getInstance(); FirebaseAuthSettings firebaseAuthSettings = firebaseAuth.getFirebaseAuthSettings(); // Configure faking the auto-retrieval with the whitelisted numbers. firebaseAuthSettings.setAutoRetrievedSmsCodeForPhoneNumber(phoneNumber, smsCode); PhoneAuthOptions options = PhoneAuthOptions.newBuilder(firebaseAuth) .setPhoneNumber(phoneNumber) .setTimeout(60L, TimeUnit.SECONDS) .setActivity(this) .setCallbacks(new PhoneAuthProvider.OnVerificationStateChangedCallbacks() { @Override public void onVerificationCompleted(PhoneAuthCredential credential) { // Instant verification is applied and a credential is directly returned. // ... } // ... }) .build(); PhoneAuthProvider.verifyPhoneNumber(options);
Kotlin+KTX
// The test phone number and code should be whitelisted in the console. val phoneNumber = "+16505554567" val smsCode = "123456" val firebaseAuth = Firebase.auth val firebaseAuthSettings = firebaseAuth.firebaseAuthSettings // Configure faking the auto-retrieval with the whitelisted numbers. firebaseAuthSettings.setAutoRetrievedSmsCodeForPhoneNumber(phoneNumber, smsCode) val options = PhoneAuthOptions.newBuilder(firebaseAuth) .setPhoneNumber(phoneNumber) .setTimeout(60L, TimeUnit.SECONDS) .setActivity(this) .setCallbacks(object : PhoneAuthProvider.OnVerificationStateChangedCallbacks() { override fun onVerificationCompleted(credential: PhoneAuthCredential) { // Instant verification is applied and a credential is directly returned. // ... } // ... }) .build() PhoneAuthProvider.verifyPhoneNumber(options)
পরবর্তী পদক্ষেপ
একজন ব্যবহারকারী প্রথমবার সাইন ইন করার পরে, একটি নতুন ব্যবহারকারীর অ্যাকাউন্ট তৈরি করা হয় এবং শংসাপত্রগুলির সাথে লিঙ্ক করা হয়—অর্থাৎ, ব্যবহারকারীর নাম এবং পাসওয়ার্ড, ফোন নম্বর, বা প্রমাণ প্রদানকারীর তথ্য — ব্যবহারকারী সাইন ইন করেছেন। এই নতুন অ্যাকাউন্টটি আপনার ফায়ারবেস প্রকল্পের অংশ হিসাবে সংরক্ষণ করা হয়েছে এবং ব্যবহারকারী কীভাবে সাইন ইন করুন না কেন, আপনার প্রকল্পের প্রতিটি অ্যাপ জুড়ে একজন ব্যবহারকারীকে শনাক্ত করতে ব্যবহার করা যেতে পারে।
আপনার অ্যাপে, আপনি
FirebaseUser
অবজেক্ট থেকে ব্যবহারকারীর মৌলিক প্রোফাইল তথ্য পেতে পারেন। ব্যবহারকারীদের পরিচালনা দেখুন।আপনার ফায়ারবেস রিয়েলটাইম ডেটাবেস এবং ক্লাউড স্টোরেজ সুরক্ষা নিয়মে , আপনি
auth
ভেরিয়েবল থেকে সাইন-ইন করা ব্যবহারকারীর অনন্য ব্যবহারকারী আইডি পেতে পারেন এবং ব্যবহারকারী কোন ডেটা অ্যাক্সেস করতে পারে তা নিয়ন্ত্রণ করতে এটি ব্যবহার করতে পারেন।
একজন ব্যবহারকারীকে সাইন আউট করতে,
signOut
কল করুন:,Kotlin+KTX
Firebase.auth.signOut()
Java
FirebaseAuth.getInstance().signOut();
আপনি ব্যবহারকারীর ফোনে একটি SMS বার্তা পাঠিয়ে ব্যবহারকারীকে সাইন ইন করতে Firebase প্রমাণীকরণ ব্যবহার করতে পারেন। ব্যবহারকারী এসএমএস বার্তায় থাকা একটি এককালীন কোড ব্যবহার করে সাইন ইন করে।
আপনার অ্যাপে ফোন নম্বর সাইন-ইন যোগ করার সবচেয়ে সহজ উপায় হল FirebaseUI ব্যবহার করা, যার মধ্যে একটি ড্রপ-ইন সাইন-ইন উইজেট রয়েছে যা ফোন নম্বর সাইন-ইন করার জন্য সাইন-ইন প্রবাহ প্রয়োগ করে, সেইসাথে পাসওয়ার্ড-ভিত্তিক এবং ফেডারেটেড সাইন -ভিতরে. এই দস্তাবেজটি বর্ণনা করে যে কীভাবে Firebase SDK ব্যবহার করে একটি ফোন নম্বর সাইন-ইন ফ্লো বাস্তবায়ন করতে হয়।
তুমি শুরু করার আগে
- যদি আপনি ইতিমধ্যেই না করে থাকেন তাহলে আপনার Android প্রকল্পে Firebase যোগ করুন ।
- আপনার মডিউল (অ্যাপ-লেভেল) গ্রেডল ফাইলে (সাধারণত
<project>/<app-module>/build.gradle
), Firebase প্রমাণীকরণ অ্যান্ড্রয়েড লাইব্রেরির জন্য নির্ভরতা যোগ করুন। আমরা লাইব্রেরি সংস্করণ নিয়ন্ত্রণ করতে Firebase Android BoM ব্যবহার করার পরামর্শ দিই।Kotlin+KTX
dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:31.2.0') // Add the dependency for the Firebase Authentication library // When using the BoM, you don't specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-auth-ktx' }
Firebase Android BoM ব্যবহার করে, আপনার অ্যাপ সবসময় Firebase Android লাইব্রেরির সামঞ্জস্যপূর্ণ সংস্করণ ব্যবহার করবে।
(বিকল্প) BoM ব্যবহার না করে Firebase লাইব্রেরি নির্ভরতা যোগ করুন
আপনি যদি Firebase BoM ব্যবহার না করা বেছে নেন, তাহলে আপনাকে অবশ্যই প্রতিটি Firebase লাইব্রেরি সংস্করণ তার নির্ভরতা লাইনে উল্লেখ করতে হবে।
মনে রাখবেন যে আপনি যদি আপনার অ্যাপে একাধিক ফায়ারবেস লাইব্রেরি ব্যবহার করেন, আমরা দৃঢ়ভাবে লাইব্রেরি সংস্করণগুলি পরিচালনা করতে BoM ব্যবহার করার পরামর্শ দিই, যা নিশ্চিত করে যে সমস্ত সংস্করণ সামঞ্জস্যপূর্ণ।
dependencies { // Add the dependency for the Firebase Authentication library // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-auth-ktx:21.1.0' }
Java
dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:31.2.0') // Add the dependency for the Firebase Authentication library // When using the BoM, you don't specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-auth' }
Firebase Android BoM ব্যবহার করে, আপনার অ্যাপ সবসময় Firebase Android লাইব্রেরির সামঞ্জস্যপূর্ণ সংস্করণ ব্যবহার করবে।
(বিকল্প) BoM ব্যবহার না করে Firebase লাইব্রেরি নির্ভরতা যোগ করুন
আপনি যদি Firebase BoM ব্যবহার না করা বেছে নেন, তাহলে আপনাকে অবশ্যই প্রতিটি Firebase লাইব্রেরি সংস্করণ তার নির্ভরতা লাইনে উল্লেখ করতে হবে।
মনে রাখবেন যে আপনি যদি আপনার অ্যাপে একাধিক ফায়ারবেস লাইব্রেরি ব্যবহার করেন, আমরা দৃঢ়ভাবে লাইব্রেরি সংস্করণগুলি পরিচালনা করতে BoM ব্যবহার করার পরামর্শ দিই, যা নিশ্চিত করে যে সমস্ত সংস্করণ সামঞ্জস্যপূর্ণ।
dependencies { // Add the dependency for the Firebase Authentication library // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-auth:21.1.0' }
- আপনি যদি এখনও আপনার অ্যাপটিকে আপনার Firebase প্রকল্পের সাথে সংযুক্ত না করে থাকেন, তাহলে Firebase কনসোল থেকে তা করুন৷
- আপনি যদি ইতিমধ্যেই Firebase কনসোলে আপনার অ্যাপের SHA-1 হ্যাশ সেট না করে থাকেন তাহলে তা করুন৷ আপনার অ্যাপের SHA-1 হ্যাশ খোঁজার বিষয়ে তথ্যের জন্য আপনার ক্লায়েন্ট প্রমাণীকরণ দেখুন।
নিরাপত্তা উদ্বেগ
শুধুমাত্র একটি ফোন নম্বর ব্যবহার করে প্রমাণীকরণ, সুবিধাজনক হলেও, অন্যান্য উপলব্ধ পদ্ধতির তুলনায় কম নিরাপদ, কারণ একটি ফোন নম্বরের দখল ব্যবহারকারীদের মধ্যে সহজেই হস্তান্তর করা যেতে পারে। এছাড়াও, একাধিক ব্যবহারকারীর প্রোফাইল সহ ডিভাইসগুলিতে, যে কোনও ব্যবহারকারী যে এসএমএস বার্তাগুলি পেতে পারে সে ডিভাইসের ফোন নম্বর ব্যবহার করে একটি অ্যাকাউন্টে সাইন ইন করতে পারে৷
আপনি যদি আপনার অ্যাপে ফোন নম্বর ভিত্তিক সাইন-ইন ব্যবহার করেন, তাহলে আপনাকে আরও নিরাপদ সাইন-ইন পদ্ধতির পাশাপাশি এটি অফার করা উচিত এবং ফোন নম্বর সাইন-ইন ব্যবহার করার নিরাপত্তা ট্রেডঅফ সম্পর্কে ব্যবহারকারীদের জানানো উচিত।
আপনার Firebase প্রকল্পের জন্য ফোন নম্বর সাইন-ইন সক্ষম করুন
SMS এর মাধ্যমে ব্যবহারকারীদের সাইন ইন করতে, আপনাকে প্রথমে আপনার Firebase প্রকল্পের জন্য ফোন নম্বর সাইন-ইন পদ্ধতি সক্রিয় করতে হবে:
- Firebase কনসোলে , প্রমাণীকরণ বিভাগটি খুলুন।
- সাইন-ইন পদ্ধতি পৃষ্ঠায়, ফোন নম্বর সাইন-ইন পদ্ধতি সক্ষম করুন।
Firebase-এর ফোন নম্বর সাইন-ইন অনুরোধের কোটা যথেষ্ট বেশি যে বেশিরভাগ অ্যাপ প্রভাবিত হবে না। যাইহোক, যদি আপনাকে ফোন প্রমাণীকরণের মাধ্যমে খুব বেশি পরিমাণ ব্যবহারকারীদের সাইন ইন করতে হয়, তাহলে আপনাকে আপনার মূল্য পরিকল্পনা আপগ্রেড করতে হতে পারে। মূল্য পৃষ্ঠা দেখুন.
অ্যাপ যাচাইকরণ সক্ষম করুন
ফোন নম্বর প্রমাণীকরণ ব্যবহার করতে, Firebase অবশ্যই আপনার অ্যাপ থেকে ফোন নম্বর সাইন-ইন অনুরোধ আসছে তা যাচাই করতে সক্ষম হবে। ফায়ারবেস প্রমাণীকরণ দুটি উপায়ে এটি সম্পন্ন করে:
- SafetyNet : যদি একজন ব্যবহারকারীর Google Play পরিষেবা সহ একটি ডিভাইস ইনস্টল করা থাকে এবং Firebase প্রমাণীকরণ Android SafetyNet এর মাধ্যমে ডিভাইসটিকে বৈধ বলে যাচাই করতে পারে, তাহলে ফোন নম্বর সাইন-ইন এগিয়ে যেতে পারে।
- Google ক্লাউড কনসোলে, আপনার প্রকল্পের জন্য অ্যান্ড্রয়েড ডিভাইস যাচাইকরণ (অপ্রচলিত) API সক্ষম করুন৷ ডিফল্ট Firebase API কী ব্যবহার করা হবে, এবং DeviceCheck API অ্যাক্সেস করার অনুমতি দেওয়া প্রয়োজন।
- আপনি যদি এখনও আপনার অ্যাপের SHA-256 ফিঙ্গারপ্রিন্ট নির্দিষ্ট না করে থাকেন, তাহলে Firebase কনসোলের সেটিংস পৃষ্ঠা থেকে তা করুন৷ আপনার অ্যাপের SHA-256 ফিঙ্গারপ্রিন্ট কীভাবে পাবেন তার বিশদ বিবরণের জন্য আপনার ক্লায়েন্টকে প্রমাণীকরণ দেখুন।
- reCAPTCHA যাচাইকরণ : যে ক্ষেত্রে SafetyNet ব্যবহার করা যাবে না, যেমন ব্যবহারকারীর কাছে Google Play Services সমর্থন না থাকলে, অথবা একটি এমুলেটরে আপনার অ্যাপ পরীক্ষা করার সময়, Firebase প্রমাণীকরণ ফোন সাইন-ইন ফ্লো সম্পূর্ণ করতে একটি reCAPTCHA যাচাইকরণ ব্যবহার করে। reCAPTCHA চ্যালেঞ্জ প্রায়শই ব্যবহারকারীকে কিছু সমাধান না করেই সম্পন্ন করা যেতে পারে। দয়া করে মনে রাখবেন যে এই প্রবাহের জন্য আপনার অ্যাপ্লিকেশনের সাথে একটি SHA-1 যুক্ত থাকা প্রয়োজন৷ এই প্রবাহের জন্য আপনার API কীকে "${PROJECT_NAME}.firebaseapp.com"-এর জন্য সীমাবদ্ধ বা অনুমোদিত তালিকাভুক্ত হতে হবে।
Firebase প্রমাণীকরণের সাথে ব্যবহারের জন্য SafetyNet সক্ষম করতে:
ব্যবহারকারীর ফোনে একটি যাচাইকরণ কোড পাঠান
ফোন নম্বর সাইন-ইন শুরু করতে, ব্যবহারকারীকে একটি ইন্টারফেস উপস্থাপন করুন যা তাদের ফোন নম্বর টাইপ করতে অনুরোধ করে। আইনি প্রয়োজনীয়তা পরিবর্তিত হয়, কিন্তু একটি সর্বোত্তম অনুশীলন হিসাবে এবং আপনার ব্যবহারকারীদের জন্য প্রত্যাশা সেট করার জন্য, আপনাকে তাদের জানানো উচিত যে যদি তারা ফোন সাইন-ইন ব্যবহার করে, তাহলে তারা যাচাইকরণের জন্য একটি SMS বার্তা পেতে পারে এবং মান দর প্রযোজ্য।
তারপর, Firebase ব্যবহারকারীর ফোন নম্বর যাচাই করার অনুরোধ করতে তাদের ফোন নম্বরটি
PhoneAuthProvider.verifyPhoneNumber
পদ্ধতিতে পাঠান। উদাহরণ স্বরূপ:Kotlin+KTX
val options = PhoneAuthOptions.newBuilder(auth) .setPhoneNumber(phoneNumber) // Phone number to verify .setTimeout(60L, TimeUnit.SECONDS) // Timeout and unit .setActivity(this) // Activity (for callback binding) .setCallbacks(callbacks) // OnVerificationStateChangedCallbacks .build() PhoneAuthProvider.verifyPhoneNumber(options)
Java
PhoneAuthOptions options = PhoneAuthOptions.newBuilder(mAuth) .setPhoneNumber(phoneNumber) // Phone number to verify .setTimeout(60L, TimeUnit.SECONDS) // Timeout and unit .setActivity(this) // Activity (for callback binding) .setCallbacks(mCallbacks) // OnVerificationStateChangedCallbacks .build(); PhoneAuthProvider.verifyPhoneNumber(options);
verifyPhoneNumber
পদ্ধতিটি পুনঃপ্রবেশকারী: আপনি যদি এটিকে একাধিকবার কল করেন, যেমন একটি অ্যাক্টিভিটিরonStart
পদ্ধতিতে, আসল অনুরোধের সময় শেষ না হওয়া পর্যন্তverifyPhoneNumber
পদ্ধতিটি দ্বিতীয় এসএমএস পাঠাবে না।যদি ব্যবহারকারী সাইন ইন করার আগে আপনার অ্যাপ বন্ধ হয়ে যায় (উদাহরণস্বরূপ, ব্যবহারকারী যখন তাদের এসএমএস অ্যাপ ব্যবহার করছেন তখন) আপনি ফোন নম্বর সাইন ইন প্রক্রিয়া পুনরায় শুরু করতে এই আচরণটি ব্যবহার করতে পারেন। আপনি
verifyPhoneNumber
কল করার পরে, একটি পতাকা সেট করুন যা নির্দেশ করে যে যাচাইকরণ চলছে। তারপর, আপনার কার্যকলাপেরonSaveInstanceState
পদ্ধতিতে পতাকাটি সংরক্ষণ করুন এবংonRestoreInstanceState
এ পতাকাটি পুনরুদ্ধার করুন। অবশেষে, আপনার অ্যাক্টিভিটিরonStart
পদ্ধতিতে, যাচাইকরণ ইতিমধ্যেই চলছে কিনা তা পরীক্ষা করুন এবং যদি তাই হয়, আবারverifyPhoneNumber
এ কল করুন। যাচাইকরণ সম্পূর্ণ বা ব্যর্থ হলে পতাকাটি সাফ করতে ভুলবেন না ( যাচাই কলব্যাক দেখুন)।স্ক্রিন ঘূর্ণন এবং অ্যাক্টিভিটি রিস্টার্টের অন্যান্য দৃষ্টান্তগুলি সহজে পরিচালনা করতে, আপনার অ্যাক্টিভিটি
verifyPhoneNumber
পদ্ধতিতে পাস করুন। কার্যকলাপ বন্ধ হয়ে গেলে কলব্যাকগুলি স্বয়ংক্রিয়ভাবে বিচ্ছিন্ন হয়ে যাবে, যাতে আপনি কলব্যাক পদ্ধতিতে অবাধে UI ট্রানজিশন কোড লিখতে পারেন৷Firebase দ্বারা প্রেরিত এসএমএস বার্তাটি আপনার প্রমাণের উদাহরণে
setLanguageCode
পদ্ধতির মাধ্যমে প্রমাণীকরণ ভাষা নির্দিষ্ট করে স্থানীয়করণ করা যেতে পারে।Kotlin+KTX
auth.setLanguageCode("fr") // To apply the default app language instead of explicitly setting it. // auth.useAppLanguage()
Java
auth.setLanguageCode("fr"); // To apply the default app language instead of explicitly setting it. // auth.useAppLanguage();
আপনি যখন
PhoneAuthProvider.verifyPhoneNumber
কল করেন, তখন আপনাকে অবশ্যইOnVerificationStateChangedCallbacks
এর একটি উদাহরণ প্রদান করতে হবে, যাতে কলব্যাক ফাংশনগুলির বাস্তবায়ন রয়েছে যা অনুরোধের ফলাফলগুলি পরিচালনা করে৷ উদাহরণ স্বরূপ:Kotlin+KTX
callbacks = object : PhoneAuthProvider.OnVerificationStateChangedCallbacks() { override fun onVerificationCompleted(credential: PhoneAuthCredential) { // This callback will be invoked in two situations: // 1 - Instant verification. In some cases the phone number can be instantly // verified without needing to send or enter a verification code. // 2 - Auto-retrieval. On some devices Google Play services can automatically // detect the incoming verification SMS and perform verification without // user action. Log.d(TAG, "onVerificationCompleted:$credential") signInWithPhoneAuthCredential(credential) } override fun onVerificationFailed(e: FirebaseException) { // This callback is invoked in an invalid request for verification is made, // for instance if the the phone number format is not valid. Log.w(TAG, "onVerificationFailed", e) if (e is FirebaseAuthInvalidCredentialsException) { // Invalid request } else if (e is FirebaseTooManyRequestsException) { // The SMS quota for the project has been exceeded } // Show a message and update the UI } override fun onCodeSent( verificationId: String, token: PhoneAuthProvider.ForceResendingToken ) { // The SMS verification code has been sent to the provided phone number, we // now need to ask the user to enter the code and then construct a credential // by combining the code with a verification ID. Log.d(TAG, "onCodeSent:$verificationId") // Save verification ID and resending token so we can use them later storedVerificationId = verificationId resendToken = token } }
Java
mCallbacks = new PhoneAuthProvider.OnVerificationStateChangedCallbacks() { @Override public void onVerificationCompleted(PhoneAuthCredential credential) { // This callback will be invoked in two situations: // 1 - Instant verification. In some cases the phone number can be instantly // verified without needing to send or enter a verification code. // 2 - Auto-retrieval. On some devices Google Play services can automatically // detect the incoming verification SMS and perform verification without // user action. Log.d(TAG, "onVerificationCompleted:" + credential); signInWithPhoneAuthCredential(credential); } @Override public void onVerificationFailed(FirebaseException e) { // This callback is invoked in an invalid request for verification is made, // for instance if the the phone number format is not valid. Log.w(TAG, "onVerificationFailed", e); if (e instanceof FirebaseAuthInvalidCredentialsException) { // Invalid request } else if (e instanceof FirebaseTooManyRequestsException) { // The SMS quota for the project has been exceeded } // Show a message and update the UI } @Override public void onCodeSent(@NonNull String verificationId, @NonNull PhoneAuthProvider.ForceResendingToken token) { // The SMS verification code has been sent to the provided phone number, we // now need to ask the user to enter the code and then construct a credential // by combining the code with a verification ID. Log.d(TAG, "onCodeSent:" + verificationId); // Save verification ID and resending token so we can use them later mVerificationId = verificationId; mResendToken = token; } };
যাচাইকরণ কলব্যাক
বেশিরভাগ অ্যাপে, আপনি
onVerificationCompleted
,onVerificationFailed
, এবংonCodeSent
কলব্যাকগুলি প্রয়োগ করেন৷ আপনি আপনার অ্যাপের প্রয়োজনীয়তার উপর নির্ভর করেonCodeAutoRetrievalTimeOut
প্রয়োগ করতে পারেন।onVerification Completed(PhoneAuthCredential)
এই পদ্ধতি দুটি পরিস্থিতিতে বলা হয়:
- তাত্ক্ষণিক যাচাইকরণ: কিছু ক্ষেত্রে ফোন নম্বরটি যাচাইকরণ কোড পাঠাতে বা প্রবেশ করার প্রয়োজন ছাড়াই তাৎক্ষণিকভাবে যাচাই করা যেতে পারে।
- স্বতঃ-পুনরুদ্ধার: কিছু ডিভাইসে, Google Play পরিষেবাগুলি স্বয়ংক্রিয়ভাবে আগত যাচাইকরণ এসএমএস সনাক্ত করতে পারে এবং ব্যবহারকারীর পদক্ষেপ ছাড়াই যাচাইকরণ সম্পাদন করতে পারে। (এই ক্ষমতা কিছু ক্যারিয়ারের সাথে অনুপলব্ধ হতে পারে।) এটি SMS Retriever API ব্যবহার করে, যার মধ্যে SMS বার্তার শেষে একটি 11 অক্ষরের হ্যাশ রয়েছে।
PhoneAuthCredential
অবজেক্ট ব্যবহার করতে পারেন যা ব্যবহারকারীকে সাইন ইন করতে কলব্যাকে পাস করা হয়েছে।onVerificationFailed(FirebaseException)
এই পদ্ধতিটি একটি অবৈধ যাচাইকরণের অনুরোধের প্রতিক্রিয়া হিসাবে বলা হয়, যেমন একটি অনুরোধ যা একটি অবৈধ ফোন নম্বর বা যাচাইকরণ কোড নির্দিষ্ট করে৷
onCodeSent(স্ট্রিং যাচাইকরণ আইডি, PhoneAuthProvider.ForceResendingToken)
ঐচ্ছিক। প্রদত্ত ফোন নম্বরে এসএমএস দ্বারা যাচাইকরণ কোড পাঠানোর পরে এই পদ্ধতিটি বলা হয়৷
যখন এই পদ্ধতিটি বলা হয়, বেশিরভাগ অ্যাপ একটি UI প্রদর্শন করে যা ব্যবহারকারীকে SMS বার্তা থেকে যাচাইকরণ কোড টাইপ করতে অনুরোধ করে। (একই সময়ে, স্বয়ংক্রিয় যাচাইকরণ পটভূমিতে চলতে পারে।) তারপর, ব্যবহারকারী যাচাইকরণ কোড টাইপ করার পরে, আপনি যাচাইকরণ কোড এবং যাচাইকরণ আইডি ব্যবহার করতে পারেন যা একটি
PhoneAuthCredential
অবজেক্ট তৈরি করতে পদ্ধতিতে পাস করা হয়েছিল, যা আপনি পালাক্রমে ব্যবহারকারী সাইন ইন করতে ব্যবহার করতে পারেন. যাইহোক, কিছু অ্যাপ যাচাইকরণ কোড UI প্রদর্শন করার আগেonCodeAutoRetrievalTimeOut
না হওয়া পর্যন্ত অপেক্ষা করতে পারে (প্রস্তাবিত নয়)।onCodeAutoRetrievalTimeOut(স্ট্রিং যাচাইকরণ আইডি)
ঐচ্ছিক।
verifyPhoneNumber
করার জন্য নির্দিষ্ট সময়সীমা শেষ হওয়ার পর এই পদ্ধতিটিকে ডাকা হয় প্রথমেonVerificationCompleted
ট্রিগারিং ছাড়াই। SIM কার্ড ছাড়া ডিভাইসগুলিতে, এই পদ্ধতিটি অবিলম্বে বলা হয় কারণ SMS স্বয়ংক্রিয় পুনরুদ্ধার সম্ভব নয়৷কিছু অ্যাপ্লিকেশান স্বয়ংক্রিয় যাচাইকরণের সময়সীমা শেষ না হওয়া পর্যন্ত ব্যবহারকারীর ইনপুট ব্লক করে এবং শুধুমাত্র তখনই একটি UI প্রদর্শন করে যা ব্যবহারকারীকে SMS বার্তা থেকে যাচাইকরণ কোড টাইপ করতে অনুরোধ করে (প্রস্তাবিত নয়)।
একটি PhoneAuthCredential অবজেক্ট তৈরি করুন
ব্যবহারকারীর ফোনে Firebase যে যাচাইকরণ কোডটি পাঠিয়েছে সেটি ব্যবহারকারী প্রবেশ করার পরে, যাচাইকরণ কোড এবং
onCodeSent
বাonCodeAutoRetrievalTimeOut
কলব্যাকে পাস করা যাচাইকরণ আইডি ব্যবহার করে একটিPhoneAuthCredential
অবজেক্ট তৈরি করুন। (যখনonVerificationCompleted
বলা হয়, আপনি সরাসরি একটিPhoneAuthCredential
অবজেক্ট পাবেন, তাই আপনি এই ধাপটি এড়িয়ে যেতে পারেন।)PhoneAuthCredential
অবজেক্ট তৈরি করতে,PhoneAuthProvider.getCredential
কল করুন:Kotlin+KTX
val credential = PhoneAuthProvider.getCredential(verificationId!!, code)
Java
PhoneAuthCredential credential = PhoneAuthProvider.getCredential(verificationId, code);
ব্যবহারকারী সাইন ইন করুন
আপনি একটি
PhoneAuthCredential
অবজেক্ট পাওয়ার পরে, তাonVerificationCompleted
কলব্যাকে হোক বাPhoneAuthProvider.getCredential
এ কল করে,PhoneAuthCredential
অবজেক্টটিকেFirebaseAuth.signInWithCredential
এ পাস করে সাইন-ইন ফ্লো সম্পূর্ণ করুন:Kotlin+KTX
private fun signInWithPhoneAuthCredential(credential: PhoneAuthCredential) { auth.signInWithCredential(credential) .addOnCompleteListener(this) { task -> if (task.isSuccessful) { // Sign in success, update UI with the signed-in user's information Log.d(TAG, "signInWithCredential:success") val user = task.result?.user } else { // Sign in failed, display a message and update the UI Log.w(TAG, "signInWithCredential:failure", task.exception) if (task.exception is FirebaseAuthInvalidCredentialsException) { // The verification code entered was invalid } // Update UI } } }
Java
private void signInWithPhoneAuthCredential(PhoneAuthCredential credential) { mAuth.signInWithCredential(credential) .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if (task.isSuccessful()) { // Sign in success, update UI with the signed-in user's information Log.d(TAG, "signInWithCredential:success"); FirebaseUser user = task.getResult().getUser(); // Update UI } else { // Sign in failed, display a message and update the UI Log.w(TAG, "signInWithCredential:failure", task.getException()); if (task.getException() instanceof FirebaseAuthInvalidCredentialsException) { // The verification code entered was invalid } } } }); }
কাল্পনিক ফোন নম্বর দিয়ে পরীক্ষা করুন
আপনি Firebase কনসোলের মাধ্যমে ডেভেলপমেন্টের জন্য কাল্পনিক ফোন নম্বর সেট আপ করতে পারেন। কাল্পনিক ফোন নম্বর দিয়ে পরীক্ষা করা এই সুবিধাগুলি প্রদান করে:
- আপনার ব্যবহারের কোটা ব্যবহার না করে ফোন নম্বর প্রমাণীকরণ পরীক্ষা করুন।
- একটি প্রকৃত SMS বার্তা না পাঠিয়ে ফোন নম্বর প্রমাণীকরণ পরীক্ষা করুন।
- থ্রোটল না হয়ে একই ফোন নম্বর দিয়ে একটানা পরীক্ষা চালান। এটি অ্যাপ স্টোর পর্যালোচনা প্রক্রিয়া চলাকালীন প্রত্যাখ্যানের ঝুঁকি কমিয়ে দেয় যদি পর্যালোচক পরীক্ষার জন্য একই ফোন নম্বর ব্যবহার করেন।
- কোনও অতিরিক্ত প্রচেষ্টা ছাড়াই বিকাশের পরিবেশে সহজেই পরীক্ষা করুন, যেমন Google Play পরিষেবাগুলি ছাড়াই iOS সিমুলেটর বা Android এমুলেটরে বিকাশ করার ক্ষমতা।
- প্রোডাকশন এনভায়রনমেন্টে প্রকৃত ফোন নম্বরে সাধারণত প্রয়োগ করা নিরাপত্তা চেক দ্বারা ব্লক না হয়ে ইন্টিগ্রেশন পরীক্ষা লিখুন।
কাল্পনিক ফোন নম্বরগুলি অবশ্যই এই প্রয়োজনীয়তাগুলি পূরণ করবে:
- নিশ্চিত করুন যে আপনি এমন ফোন নম্বর ব্যবহার করছেন যা আসলেই কাল্পনিক, এবং ইতিমধ্যেই বিদ্যমান নেই। ফায়ারবেস প্রমাণীকরণ আপনাকে আসল ব্যবহারকারীদের দ্বারা ব্যবহৃত বিদ্যমান ফোন নম্বরগুলিকে পরীক্ষার নম্বর হিসাবে সেট করার অনুমতি দেয় না। একটি বিকল্প হল ইউএস টেস্ট ফোন নম্বর হিসাবে 555 প্রিফিক্সড নম্বর ব্যবহার করা, উদাহরণস্বরূপ: +1 650-555-3434
- দৈর্ঘ্য এবং অন্যান্য সীমাবদ্ধতার জন্য ফোন নম্বর সঠিকভাবে ফরম্যাট করতে হবে। তারা এখনও প্রকৃত ব্যবহারকারীর ফোন নম্বরের মতো একই বৈধতার মধ্য দিয়ে যাবে।
- আপনি বিকাশের জন্য 10টি পর্যন্ত ফোন নম্বর যোগ করতে পারেন৷
- পরীক্ষামূলক ফোন নম্বর/কোডগুলি ব্যবহার করুন যা অনুমান করা কঠিন এবং ঘন ঘন পরিবর্তন করুন।
কাল্পনিক ফোন নম্বর এবং যাচাইকরণ কোড তৈরি করুন
- Firebase কনসোলে , প্রমাণীকরণ বিভাগটি খুলুন।
- সাইন ইন পদ্ধতি ট্যাবে, ফোন প্রদানকারী সক্ষম করুন যদি আপনি ইতিমধ্যে না করে থাকেন।
- অ্যাকর্ডিয়ন মেনু পরীক্ষার জন্য ফোন নম্বর খুলুন।
- আপনি যে ফোন নম্বরটি পরীক্ষা করতে চান তা প্রদান করুন, উদাহরণস্বরূপ: +1 650-555-3434 ।
- সেই নির্দিষ্ট নম্বরের জন্য 6-সংখ্যার যাচাইকরণ কোড প্রদান করুন, উদাহরণস্বরূপ: 654321 ।
- নম্বর যোগ করুন। যদি প্রয়োজন হয়, আপনি ফোন নম্বর এবং এর কোডটি মুছে ফেলতে পারেন সংশ্লিষ্ট সারির উপর হোভার করে এবং ট্র্যাশ আইকনে ক্লিক করে।
ম্যানুয়াল পরীক্ষা
আপনি সরাসরি আপনার অ্যাপ্লিকেশনে একটি কাল্পনিক ফোন নম্বর ব্যবহার শুরু করতে পারেন। এটি আপনাকে কোটা সংক্রান্ত সমস্যা বা থ্রটলিং ছাড়াই বিকাশের পর্যায়ে ম্যানুয়াল টেস্টিং করতে দেয়। আপনি Google Play পরিষেবা ইনস্টল না করে সরাসরি iOS সিমুলেটর বা Android এমুলেটর থেকে পরীক্ষা করতে পারেন।
আপনি যখন কাল্পনিক ফোন নম্বর প্রদান করেন এবং যাচাইকরণ কোড পাঠান, তখন কোনো প্রকৃত SMS পাঠানো হয় না। পরিবর্তে, সাইন ইন সম্পূর্ণ করতে আপনাকে পূর্বে কনফিগার করা যাচাইকরণ কোড প্রদান করতে হবে।
সাইন-ইন সম্পূর্ণ হলে, সেই ফোন নম্বর দিয়ে একজন Firebase ব্যবহারকারী তৈরি করা হয়। ব্যবহারকারীর আসল ফোন নম্বর ব্যবহারকারীর মতো একই আচরণ এবং বৈশিষ্ট্য রয়েছে এবং একইভাবে রিয়েলটাইম ডেটাবেস/ক্লাউড ফায়ারস্টোর এবং অন্যান্য পরিষেবাগুলি অ্যাক্সেস করতে পারে। এই প্রক্রিয়ার সময় যে আইডি টোকেনটি মিন্ট করা হয়েছে তাতে একজন প্রকৃত ফোন নম্বর ব্যবহারকারীর মতোই স্বাক্ষর রয়েছে।
আরেকটি বিকল্প হল এই ব্যবহারকারীদের উপর কাস্টম দাবির মাধ্যমে একটি পরীক্ষার ভূমিকা সেট করা যাতে আপনি তাদের অ্যাক্সেসকে আরও সীমিত করতে চান তাহলে তাদের জাল ব্যবহারকারী হিসাবে আলাদা করতে পারেন।
পরীক্ষার জন্য ম্যানুয়ালি reCAPTCHA ফ্লো ট্রিগার করতে,
forceRecaptchaFlowForTesting()
পদ্ধতি ব্যবহার করুন।// Force reCAPTCHA flow FirebaseAuth.getInstance().getFirebaseAuthSettings().forceRecaptchaFlowForTesting();
ইন্টিগ্রেশন টেস্টিং
ম্যানুয়াল টেস্টিং ছাড়াও, Firebase প্রমাণীকরণ ফোন প্রমাণীকরণ পরীক্ষার জন্য ইন্টিগ্রেশন পরীক্ষা লিখতে সহায়তা করার জন্য API প্রদান করে। এই APIগুলি ওয়েবে reCAPTCHA প্রয়োজনীয়তা এবং iOS-এ নীরব পুশ বিজ্ঞপ্তিগুলি অক্ষম করে অ্যাপ যাচাইকরণ অক্ষম করে৷ এটি এই প্রবাহে অটোমেশন পরীক্ষাকে সম্ভব করে তোলে এবং বাস্তবায়ন করা সহজ করে তোলে। In addition, they help provide the ability to test instant verification flows on Android.
On Android, call
setAppVerificationDisabledForTesting()
before thesignInWithPhoneNumber
call. This disables app verification automatically, allowing you to pass the phone number without manually solving it. Note that even though reCAPTCHA and/or SafetyNet are disabled, using a real phone number will still fail to complete sign in. Only fictional phone numbers can be used with this API.// Turn off phone auth app verification. FirebaseAuth.getInstance().getFirebaseAuthSettings() .setAppVerificationDisabledForTesting();
Calling
verifyPhoneNumber
with a fictional number triggers theonCodeSent
callback, in which you'll need to provide the corresponding verification code. This allows testing in Android Emulators.Java
String phoneNum = "+16505554567"; String testVerificationCode = "123456"; // Whenever verification is triggered with the whitelisted number, // provided it is not set for auto-retrieval, onCodeSent will be triggered. FirebaseAuth auth = FirebaseAuth.getInstance(); PhoneAuthOptions options = PhoneAuthOptions.newBuilder(auth) .setPhoneNumber(phoneNum) .setTimeout(60L, TimeUnit.SECONDS) .setActivity(this) .setCallbacks(new PhoneAuthProvider.OnVerificationStateChangedCallbacks() { @Override public void onCodeSent(String verificationId, PhoneAuthProvider.ForceResendingToken forceResendingToken) { // Save the verification id somewhere // ... // The corresponding whitelisted code above should be used to complete sign-in. MainActivity.this.enableUserManuallyInputCode(); } @Override public void onVerificationCompleted(PhoneAuthCredential phoneAuthCredential) { // Sign in with the credential // ... } @Override public void onVerificationFailed(FirebaseException e) { // ... } }) .build(); PhoneAuthProvider.verifyPhoneNumber(options);
Kotlin+KTX
val phoneNum = "+16505554567" val testVerificationCode = "123456" // Whenever verification is triggered with the whitelisted number, // provided it is not set for auto-retrieval, onCodeSent will be triggered. val options = PhoneAuthOptions.newBuilder(Firebase.auth) .setPhoneNumber(phoneNum) .setTimeout(30L, TimeUnit.SECONDS) .setActivity(this) .setCallbacks(object : PhoneAuthProvider.OnVerificationStateChangedCallbacks() { override fun onCodeSent( verificationId: String, forceResendingToken: PhoneAuthProvider.ForceResendingToken ) { // Save the verification id somewhere // ... // The corresponding whitelisted code above should be used to complete sign-in. this@MainActivity.enableUserManuallyInputCode() } override fun onVerificationCompleted(phoneAuthCredential: PhoneAuthCredential) { // Sign in with the credential // ... } override fun onVerificationFailed(e: FirebaseException) { // ... } }) .build() PhoneAuthProvider.verifyPhoneNumber(options)
Additionally, you can test auto-retrieval flows in Android by setting the fictional number and its corresponding verification code for auto-retrieval by calling
setAutoRetrievedSmsCodeForPhoneNumber
.When
verifyPhoneNumber
is called, it triggersonVerificationCompleted
with thePhoneAuthCredential
directly. This works only with fictional phone numbers.Make sure this is disabled and no fictional phone numbers are hardcoded in your app when publishing your application to the Google Play store.
Java
// The test phone number and code should be whitelisted in the console. String phoneNumber = "+16505554567"; String smsCode = "123456"; FirebaseAuth firebaseAuth = FirebaseAuth.getInstance(); FirebaseAuthSettings firebaseAuthSettings = firebaseAuth.getFirebaseAuthSettings(); // Configure faking the auto-retrieval with the whitelisted numbers. firebaseAuthSettings.setAutoRetrievedSmsCodeForPhoneNumber(phoneNumber, smsCode); PhoneAuthOptions options = PhoneAuthOptions.newBuilder(firebaseAuth) .setPhoneNumber(phoneNumber) .setTimeout(60L, TimeUnit.SECONDS) .setActivity(this) .setCallbacks(new PhoneAuthProvider.OnVerificationStateChangedCallbacks() { @Override public void onVerificationCompleted(PhoneAuthCredential credential) { // Instant verification is applied and a credential is directly returned. // ... } // ... }) .build(); PhoneAuthProvider.verifyPhoneNumber(options);
Kotlin+KTX
// The test phone number and code should be whitelisted in the console. val phoneNumber = "+16505554567" val smsCode = "123456" val firebaseAuth = Firebase.auth val firebaseAuthSettings = firebaseAuth.firebaseAuthSettings // Configure faking the auto-retrieval with the whitelisted numbers. firebaseAuthSettings.setAutoRetrievedSmsCodeForPhoneNumber(phoneNumber, smsCode) val options = PhoneAuthOptions.newBuilder(firebaseAuth) .setPhoneNumber(phoneNumber) .setTimeout(60L, TimeUnit.SECONDS) .setActivity(this) .setCallbacks(object : PhoneAuthProvider.OnVerificationStateChangedCallbacks() { override fun onVerificationCompleted(credential: PhoneAuthCredential) { // Instant verification is applied and a credential is directly returned. // ... } // ... }) .build() PhoneAuthProvider.verifyPhoneNumber(options)
পরবর্তী পদক্ষেপ
একজন ব্যবহারকারী প্রথমবার সাইন ইন করার পরে, একটি নতুন ব্যবহারকারীর অ্যাকাউন্ট তৈরি করা হয় এবং শংসাপত্রগুলির সাথে লিঙ্ক করা হয়—অর্থাৎ, ব্যবহারকারীর নাম এবং পাসওয়ার্ড, ফোন নম্বর, বা প্রমাণ প্রদানকারীর তথ্য — ব্যবহারকারী সাইন ইন করেছেন। এই নতুন অ্যাকাউন্টটি আপনার ফায়ারবেস প্রকল্পের অংশ হিসাবে সংরক্ষণ করা হয়েছে এবং ব্যবহারকারী কীভাবে সাইন ইন করুন না কেন, আপনার প্রকল্পের প্রতিটি অ্যাপ জুড়ে একজন ব্যবহারকারীকে শনাক্ত করতে ব্যবহার করা যেতে পারে।
আপনার অ্যাপে, আপনি
FirebaseUser
অবজেক্ট থেকে ব্যবহারকারীর মৌলিক প্রোফাইল তথ্য পেতে পারেন। ব্যবহারকারীদের পরিচালনা দেখুন।আপনার ফায়ারবেস রিয়েলটাইম ডেটাবেস এবং ক্লাউড স্টোরেজ সুরক্ষা নিয়মে , আপনি
auth
ভেরিয়েবল থেকে সাইন-ইন করা ব্যবহারকারীর অনন্য ব্যবহারকারী আইডি পেতে পারেন এবং ব্যবহারকারী কোন ডেটা অ্যাক্সেস করতে পারে তা নিয়ন্ত্রণ করতে এটি ব্যবহার করতে পারেন।
একজন ব্যবহারকারীকে সাইন আউট করতে,
signOut
কল করুন:Kotlin+KTX
Firebase.auth.signOut()
Java
FirebaseAuth.getInstance().signOut();
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2023-02-03 UTC.
[{ "type": "thumb-down", "id": "missingTheInformationINeed", "label":"এতে আমার প্রয়োজনীয় তথ্য নেই" },{ "type": "thumb-down", "id": "tooComplicatedTooManySteps", "label":"খুব জটিল / অনেক ধাপ" },{ "type": "thumb-down", "id": "outOfDate", "label":"পুরনো" },{ "type": "thumb-down", "id": "translationIssue", "label":"অনুবাদ সংক্রান্ত সমস্যা" },{ "type": "thumb-down", "id": "samplesCodeIssue", "label":"নমুনা / কোড সংক্রান্ত সমস্যা" },{ "type": "thumb-down", "id": "otherDown", "label":"অন্যান্য" }] [{ "type": "thumb-up", "id": "easyToUnderstand", "label":"সহজে বোঝা যায়" },{ "type": "thumb-up", "id": "solvedMyProblem", "label":"আমার সমস্যার সমাধান হয়েছে" },{ "type": "thumb-up", "id": "otherUp", "label":"অন্যান্য" }]