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

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

ফোন নম্বর সাইন-ইন যোগ করার জন্য সবচেয়ে সহজ উপায় এ আপনার অ্যাপ্লিকেশান ব্যবহার করা FirebaseUI , যা একটি ড্রপ-ইন রয়েছে উইজেট সাইন-ইন কার্যকরী ফোন নম্বরের জন্য সাইন-ইন করে সাইন ইন প্রবাহগুলি, সেইসাথে পাসওয়ার্ড-ভিত্তিক ও ফেডারেট চিহ্ন -ভিতরে. এই নথিতে বর্ণনা করা হয়েছে কিভাবে Firebase SDK ব্যবহার করে একটি ফোন নম্বর সাইন-ইন প্রবাহ বাস্তবায়ন করতে হয়।

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

  1. আপনি ইতিমধ্যে থাকে, তাহলে আপনার অ্যান্ড্রয়েড প্রকল্পের Firebase যোগ
  2. ব্যবহার Firebase অ্যান্ড্রয়েড Bom , আপনার মডিউল (অ্যাপ্লিকেশান-স্তর) Gradle ফাইল (সাধারণত Firebase প্রমাণীকরণ অ্যান্ড্রয়েড লাইব্রেরির জন্য নির্ভরতা ঘোষণা app/build.gradle )।

    জাভা

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:28.4.1')
    
        // Declare 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 অ্যান্ড্রয়েড Bom , আপনার অ্যাপ্লিকেশন সবসময় Firebase অ্যান্ড্রয়েড লাইব্রেরি সামঞ্জস্যপূর্ণ সংস্করণ ব্যবহার করবে।

    (বিকল্প) Bom ব্যবহার না করেই Firebase গ্রন্থাগার নির্ভরতা ঘোষণা

    আপনি যদি Firebase BoM ব্যবহার না করার সিদ্ধান্ত নেন, তাহলে আপনাকে অবশ্যই প্রতিটি Firebase লাইব্রেরির সংস্করণ তার নির্ভরতা লাইনে নির্দিষ্ট করতে হবে।

    মনে রাখবেন যদি আপনি আপনার অ্যাপ্লিকেশন একাধিক Firebase লাইব্রেরি ব্যবহার করেন তখন আমরা অত্যন্ত গ্রন্থাগার সংস্করণ, যা নিশ্চিত করে যে সমস্ত সংস্করণের সামঞ্জস্যপূর্ণ পরিচালনা করতে Bom ব্যবহার সুপারিশ।

    dependencies {
        // Declare 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.0.1'
    }
    

    কোটলিন+কেটিএক্স

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:28.4.1')
    
        // Declare 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 অ্যান্ড্রয়েড Bom , আপনার অ্যাপ্লিকেশন সবসময় Firebase অ্যান্ড্রয়েড লাইব্রেরি সামঞ্জস্যপূর্ণ সংস্করণ ব্যবহার করবে।

    (বিকল্প) Bom ব্যবহার না করেই Firebase গ্রন্থাগার নির্ভরতা ঘোষণা

    আপনি যদি Firebase BoM ব্যবহার না করার সিদ্ধান্ত নেন, তাহলে আপনাকে অবশ্যই প্রতিটি Firebase লাইব্রেরির সংস্করণ তার নির্ভরতা লাইনে নির্দিষ্ট করতে হবে।

    মনে রাখবেন যদি আপনি আপনার অ্যাপ্লিকেশন একাধিক Firebase লাইব্রেরি ব্যবহার করেন তখন আমরা অত্যন্ত গ্রন্থাগার সংস্করণ, যা নিশ্চিত করে যে সমস্ত সংস্করণের সামঞ্জস্যপূর্ণ পরিচালনা করতে Bom ব্যবহার সুপারিশ।

    dependencies {
        // Declare 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.0.1'
    }
    
  3. আপনি এখনও আপনার Firebase প্রকল্পে আপনার অ্যাপ সংযুক্ত না করে থাকেন, থেকে তা করতে Firebase কনসোল
  4. যদি আপনি ইতিমধ্যে আপনার অ্যাপ্লিকেশনের SHA-1 হ্যাশ সেট না করে থাকেন Firebase কনসোল , তাই না। দেখুন আপনার ক্লায়েন্ট প্রমাণ করা হচ্ছে আপনার অ্যাপ্লিকেশনের SHA-1 হ্যাশ খোঁজার সম্পর্কে তথ্যের জন্য।

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

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

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

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

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

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

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

অ্যাপ যাচাইকরণ সক্ষম করুন

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

  • SafetyNet: একটি ব্যবহারকারী ইনস্টল Google Play পরিষেবাদিতে একটি ডিভাইস আছে, এবং Firebase প্রমাণীকরণের সাথে বৈধ হিসেবে ডিভাইস যাচাই করতে পারেন অ্যান্ড্রয়েড SafetyNet , ফোন নম্বর সাইন-ইন এগিয়ে যেতে পারেন।
  • Firebase প্রমাণীকরণের সাথে ব্যবহারের জন্য SafeNet সক্ষম করতে:

    1. Google মেঘ কনসোলে সক্ষম অ্যান্ড্রয়েড DeviceCheck এপিআই আপনার প্রকল্পের জন্য। ডিফল্ট Firebase API কী ব্যবহার করা হবে, এবং DeviceCheck API অ্যাক্সেস করার অনুমতি দেওয়া প্রয়োজন।
    2. আপনি যদি এখনো আপনার অ্যাপ্লিকেশনের রয়েছে SHA-256 আঙুলের ছাপ নির্দিষ্ট না করে থাকেন, থেকে তা করতে সেটিংস পৃষ্ঠা Firebase কনসোলের। পড়ুন আপনার ক্লায়েন্ট প্রমাণ করা হচ্ছে কিভাবে আপনার অ্যাপ্লিকেশনের রয়েছে SHA-256 আঙুলের ছাপ পেতে বিস্তারিত।
  • reCAPTCHA নির্ধারণ: ঘটনা SafetyNet যেমন ব্যবহারকারীর Google Play পরিষেবাগুলির সমর্থন, অথবা যখন একটি এমুলেটর এ আপনার অ্যাপ পরীক্ষা নেই যখন হিসেবে ব্যবহার করা যাবে না যে, Firebase প্রমাণীকরণ একটি reCAPTCHA যাচাইকরণের ফোন সাইন-ইন ফ্লো সম্পূর্ণ করতে ব্যবহার করে। ReCAPTCHA চ্যালেঞ্জ প্রায়ই ব্যবহারকারীর কোন কিছু সমাধান না করেই সম্পন্ন করা যায়। দয়া করে মনে রাখবেন যে এই প্রবাহের জন্য প্রয়োজন যে একটি SHA-1 আপনার অ্যাপ্লিকেশনের সাথে যুক্ত।

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

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

তারপর, তাদের ফোন নম্বর পাস PhoneAuthProvider.verifyPhoneNumber অনুরোধ Firebase ব্যবহারকারীর ফোন নম্বর যাচাই করতে পদ্ধতি। উদাহরণ স্বরূপ:

জাভা

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);     

কোটলিন+কেটিএক্স

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)

verifyPhoneNumber পদ্ধতি পুন: প্রবেশ: যদি আপনি এটা যেমন একটি কার্যকলাপ এর হিসাবে একাধিক বার, কল onStart পদ্ধতি, verifyPhoneNumber পদ্ধতি একটি দ্বিতীয় এসএমএস যদি না আসল অনুরোধটি সময় শেষ হয়েছে পাঠাবেন না।

ব্যবহারকারীর সাইন ইন করার আগে যদি আপনার অ্যাপ বন্ধ হয়ে যায় (উদাহরণস্বরূপ, যখন ব্যবহারকারী তাদের এসএমএস অ্যাপ ব্যবহার করছেন) তখন ফোন নম্বর সাইন ইন প্রক্রিয়া পুনরায় শুরু করতে আপনি এই আচরণটি ব্যবহার করতে পারেন। পরে আপনাকে কল verifyPhoneNumber , একটি পতাকা ইঙ্গিত করে যে যাচাইকরন চলার সময় সেট। তারপর, আপনার ভ্রমণ এর পতাকা রক্ষা onSaveInstanceState পদ্ধতি এবং পতাকা পুনঃস্থাপন onRestoreInstanceState । অবশেষে, আপনার কার্যকলাপ এর onStart পদ্ধতি, চেক যদি যাচাই ইতিমধ্যেই প্রগতিতে রয়েছে, এবং যদি তাই হয়, কল verifyPhoneNumber আবার। পতাকা পরিষ্কার যখন যাচাইকরণের সম্পূর্ণ বা ব্যর্থ ভুলবেন না (দেখুন যাচাই callbacks )।

সহজে পর্দা ঘূর্ণন এবং কার্যকলাপ পুনরায় আরম্ভ অন্যান্য দৃষ্টান্ত হ্যান্ডেল করতে এখানে আপনার কার্যকলাপ পাস verifyPhoneNumber পদ্ধতি। ক্রিয়াকলাপ বন্ধ হয়ে গেলে কলব্যাকগুলি স্বয়ংক্রিয়ভাবে বিচ্ছিন্ন হয়ে যাবে, যাতে আপনি কলব্যাক পদ্ধতিতে অবাধে UI ট্রানজিশন কোড লিখতে পারেন।

এসএমএস Firebase দ্বারা প্রেরিত বার্তা এছাড়াও মাধ্যমে প্রমাণীকরণ ভাষা নির্দিষ্ট করে স্থানীয় যাবে setLanguageCode আপনার প্রমাণীকরণ উদাহরণস্বরূপ উপর পদ্ধতি।

জাভা

auth.setLanguageCode("fr");
// To apply the default app language instead of explicitly setting it.
// auth.useAppLanguage();

কোটলিন+কেটিএক্স

auth.setLanguageCode("fr")
// To apply the default app language instead of explicitly setting it.
// auth.useAppLanguage()

আপনি কল যখন PhoneAuthProvider.verifyPhoneNumber , এছাড়াও আপনি একটি দৃষ্টান্ত প্রদান করতে হবে OnVerificationStateChangedCallbacks , যা কলব্যাক ফাংশন যে অনুরোধের ফলাফল হ্যান্ডেল এর বাস্তবায়নের রয়েছে। উদাহরণ স্বরূপ:

জাভা

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;
    }
};

কোটলিন+কেটিএক্স

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
    }
}

যাচাই কলব্যাক

সবচেয়ে বেশী অ্যাপ, আপনি বাস্তবায়ন onVerificationCompleted , onVerificationFailed এবং onCodeSent callbacks। এছাড়াও আপনি বাস্তবায়ন হতে পারে onCodeAutoRetrievalTimeOut , আপনার অ্যাপ্লিকেশন এর প্রয়োজনীয়তা উপর নির্ভর করে।

onVerificationCompleted (PhoneAuthCredential)

এই পদ্ধতি দুটি পরিস্থিতিতে বলা হয়:

  • তাত্ক্ষণিক যাচাইকরণ: কিছু ক্ষেত্রে ফোন নম্বরটি যাচাইকরণ কোড প্রেরণ বা প্রবেশের প্রয়োজন ছাড়াই তাৎক্ষণিকভাবে যাচাই করা যায়।
  • স্বয়ংক্রিয় পুনরুদ্ধার: কিছু ডিভাইসে, গুগল প্লে পরিষেবাগুলি স্বয়ংক্রিয়ভাবে আগত যাচাইকরণ এসএমএস সনাক্ত করতে পারে এবং ব্যবহারকারীর ক্রিয়া ছাড়াই যাচাই করতে পারে। (এই সামর্থ্য কিছু কিছু ক্যারিয়ারে সঙ্গে অনুপলব্ধ হতে পারে।) এই ব্যবহার এসএমএস Retriever এপিআই , যা এসএমএস বার্তার শেষে 11 অক্ষর হ্যাশ অন্তর্ভুক্ত করা হয়েছে।
উভয় ক্ষেত্রেই, ব্যবহারকারীর ফোন নম্বর সফলভাবে যাচাই করা হয়েছে, এবং আপনি ব্যবহার করতে পারেন PhoneAuthCredential বস্তুর যে কলব্যাক করার পাস ব্যবহারকারী সাইন ইন

onVerificationFailed (FirebaseException)

এই পদ্ধতিটি একটি অবৈধ যাচাইকরণের অনুরোধের জবাবে বলা হয়, যেমন একটি অনুরোধ যা একটি অবৈধ ফোন নম্বর বা যাচাইকরণ কোড নির্দিষ্ট করে।

onCodeSent (String verificationId, PhoneAuthProvider.ForceResendingToken)

চ্ছিক। প্রদত্ত ফোন নম্বরে এসএমএসের মাধ্যমে যাচাই কোড পাঠানোর পর এই পদ্ধতি বলা হয়।

যখন এই পদ্ধতি বলা হয়, অধিকাংশ অ্যাপই একটি UI প্রদর্শন করে যা ব্যবহারকারীকে SMS বার্তা থেকে যাচাইকরণ কোড টাইপ করতে অনুরোধ করে। , যাচাইকরণ কোড (একই সময়ে, স্বয়ংক্রিয় যাচাইকরণ পটভূমিতে অগ্রসর করা যেতে পারে।) তারপর ব্যবহারকারী ধরনের পরে, আপনি যাচাইকরণ কোড এবং যাচাইকরণ আইডি পদ্ধতি প্রেরণ করেন তৈরি করতে ব্যবহার করতে পারেন PhoneAuthCredential বস্তু, যার আপনি ব্যবহারকারীকে সাইন ইন করতে ব্যবহার করতে পারেন। যাইহোক, কিছু অ্যাপস পর্যন্ত অপেক্ষা পারে onCodeAutoRetrievalTimeOut যাচাইকরণ কোড UI 'তে প্রদর্শন করার আগে বলা হয় (প্রস্তাবিত নয়)।

onCodeAutoRetrievalTimeOut (স্ট্রিং ভেরিফিকেশন আইডি)

চ্ছিক। পরে সময় সমাপ্ত সময়কাল নির্দিষ্ট এই পদ্ধতি বলা হয় verifyPhoneNumber ছাড়া অতিবাহিত হয়েছে onVerificationCompleted প্রথম triggering। সিম কার্ড ছাড়া ডিভাইসগুলিতে, এই পদ্ধতিটি অবিলম্বে বলা হয় কারণ এসএমএস স্বয়ংক্রিয়ভাবে পুনরুদ্ধার সম্ভব নয়।

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

একটি PhoneAuthCredential বস্তু তৈরি করুন

ব্যবহারকারী যাচাইকরণের কোডটি Firebase ব্যবহারকারীর ফোনে পাঠানো প্রবেশ পর তৈরি PhoneAuthCredential যাচাইকরণ কোড এবং যাচাইকরণ আইডি প্রেরণ করা হত ব্যবহার করে, বস্তু onCodeSent বা onCodeAutoRetrievalTimeOut কলব্যাক। (যখন onVerificationCompleted বলা হয়, আপনি একটি পেতে PhoneAuthCredential সরাসরি বস্তু, তাই আপনি এই ধাপটি উপেক্ষা করতে পারেন।)

তৈরি করতে PhoneAuthCredential বস্তু, কল PhoneAuthProvider.getCredential :

জাভা

PhoneAuthCredential credential = PhoneAuthProvider.getCredential(verificationId, code);

কোটলিন+কেটিএক্স

val credential = PhoneAuthProvider.getCredential(verificationId!!, code)

ব্যবহারকারী সাইন ইন করুন

আপনি পর পেতে PhoneAuthCredential বস্তু, কিনা onVerificationCompleted কলব্যাক বা কল করে PhoneAuthProvider.getCredential , ক্ষণস্থায়ী দ্বারা সাইন-ইন ফ্লো সম্পন্ন PhoneAuthCredential বস্তুর FirebaseAuth.signInWithCredential :

জাভা

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
                        }
                    }
                }
            });
}

কোটলিন+কেটিএক্স

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
                }
            }
}

কাল্পনিক ফোন নম্বর দিয়ে পরীক্ষা করুন

আপনি Firebase কনসোলের মাধ্যমে বিকাশের জন্য কাল্পনিক ফোন নম্বর সেট করতে পারেন। কাল্পনিক ফোন নম্বর দিয়ে পরীক্ষা করা এই সুবিধাগুলি প্রদান করে:

  • আপনার ব্যবহারের কোটা ব্যবহার না করে ফোন নম্বর প্রমাণীকরণ পরীক্ষা করুন।
  • প্রকৃত এসএমএস বার্তা না পাঠিয়ে ফোন নম্বর প্রমাণীকরণ পরীক্ষা করুন।
  • হতাশ না হয়ে একই ফোন নম্বর দিয়ে পরপর পরীক্ষা চালান। এটি অ্যাপ স্টোর পর্যালোচনা প্রক্রিয়ার সময় প্রত্যাখ্যানের ঝুঁকি হ্রাস করে যদি পর্যালোচক পরীক্ষার জন্য একই ফোন নম্বর ব্যবহার করে।
  • কোনও অতিরিক্ত প্রচেষ্টা ছাড়াই বিকাশ পরিবেশে সহজেই পরীক্ষা করুন, যেমন একটি আইওএস সিমুলেটরে বিকাশের ক্ষমতা বা গুগল প্লে সার্ভিস ছাড়া অ্যান্ড্রয়েড এমুলেটর।
  • সুরক্ষা চেক দ্বারা অবরুদ্ধ না হয়ে ইন্টিগ্রেশন পরীক্ষা লিখুন সাধারণত উত্পাদন পরিবেশে প্রকৃত ফোন নম্বরে প্রয়োগ করা হয়।

কাল্পনিক ফোন নম্বরগুলি অবশ্যই এই প্রয়োজনীয়তাগুলি পূরণ করতে হবে:

  1. নিশ্চিত করুন যে আপনি এমন ফোন নম্বর ব্যবহার করেছেন যা প্রকৃতপক্ষে কাল্পনিক এবং ইতিমধ্যে বিদ্যমান নেই। ফায়ারবেস প্রমাণীকরণ আপনাকে প্রকৃত ব্যবহারকারীদের দ্বারা ব্যবহৃত ফোন নম্বরগুলি পরীক্ষা নম্বর হিসাবে সেট করার অনুমতি দেয় না। একটি বিকল্প উদাহরণস্বরূপ, মার্কিন পরীক্ষা ফোন নম্বর যেমন 555 পূর্বে সমাধান সংখ্যা ব্যবহার করা: +1 টি 650-555-3434
  2. দৈর্ঘ্য এবং অন্যান্য সীমাবদ্ধতার জন্য ফোন নম্বর সঠিকভাবে ফরম্যাট করতে হবে। তারা এখনও একটি বাস্তব ব্যবহারকারীর ফোন নম্বর হিসাবে একই বৈধতা মাধ্যমে যেতে হবে।
  3. আপনি উন্নয়নের জন্য 10 টি ফোন নম্বর যোগ করতে পারেন।
  4. পরীক্ষা ফোন নম্বর/কোডগুলি ব্যবহার করুন যা অনুমান করা কঠিন এবং ঘন ঘন পরিবর্তন করুন।

কাল্পনিক ফোন নম্বর এবং যাচাইকরণ কোড তৈরি করুন

  1. ইন Firebase কনসোল , প্রমাণীকরণ অধ্যায় খুলুন।
  2. যদি আপনি ইতিমধ্যেই না করে পদ্ধতি ট্যাবে সাইন ইন, ফোন প্রদানকারী সক্রিয় করুন।
  3. অ্যাকর্ডিয়ন মেনু পরীক্ষার জন্য ফোন নম্বরগুলি খুলুন।
  4. , আপনি পরীক্ষা করতে চান ফোন নম্বর প্রদান করুন উদাহরণস্বরূপ: +1 টি 650-555-3434।
  5. নির্দিষ্ট সংখ্যার জন্য 6-সংখ্যার যাচাইকরণ কোডটি, উদাহরণস্বরূপ: 654321।
  6. নম্বর জুড়ুন। যদি প্রয়োজন হয়, আপনি সংশ্লিষ্ট সারির উপর ঘোরাফেরা করে এবং ট্র্যাশ আইকনে ক্লিক করে ফোন নম্বর এবং তার কোড মুছে ফেলতে পারেন।

ম্যানুয়াল পরীক্ষা

আপনি সরাসরি আপনার আবেদনে একটি কাল্পনিক ফোন নম্বর ব্যবহার শুরু করতে পারেন। এটি আপনাকে কোটা ইস্যু বা থ্রোটলিং না করেই বিকাশের পর্যায়ে ম্যানুয়াল পরীক্ষা করতে দেয়। আপনি গুগল প্লে সার্ভিস ইনস্টল না করেও সরাসরি একটি iOS সিমুলেটর বা অ্যান্ড্রয়েড এমুলেটর থেকে পরীক্ষা করতে পারেন।

যখন আপনি কাল্পনিক ফোন নম্বর প্রদান করেন এবং যাচাইকরণ কোড পাঠান, তখন প্রকৃত এসএমএস পাঠানো হয় না। পরিবর্তে, সাইন ইন সম্পন্ন করার জন্য আপনাকে পূর্বে কনফিগার করা যাচাইকরণ কোড প্রদান করতে হবে।

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

আরেকটি বিকল্প হয় মাধ্যমে কাস্টম দাবি একটি পরীক্ষা ভূমিকা নির্ধারণ করে এই ব্যবহারকারীদের উপর জাল ব্যবহারকারী হিসাবে তাদের পার্থক্য যদি আপনি আরও অ্যাক্সেস সীমাবদ্ধ করতে চান।

ম্যানুয়ালি তথ্যের পরীক্ষার জন্য প্রবাহিত, ব্যবহার ট্রিগার forceRecaptchaFlowForTesting() পদ্ধতি।

// Force reCAPTCHA flow
FirebaseAuth.getInstance().getFirebaseAuthSettings().forceRecaptchaFlowForTesting();

ইন্টিগ্রেশন টেস্টিং

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

Android এর উপর, কল setAppVerificationDisabledForTesting() সামনে signInWithPhoneNumber কল। এটি স্বয়ংক্রিয়ভাবে অ্যাপ্লিকেশন যাচাইকরণ অক্ষম করে, আপনাকে ফোন নম্বরটি ম্যানুয়ালি সমাধান না করে পাস করতে দেয়। মনে রাখবেন যে যদিও reCAPTCHA এবং/অথবা SafetyNet নিষ্ক্রিয় করা আছে, একটি বাস্তব ফোন নম্বর ব্যবহার করে এখনও সাইন ইন সম্পূর্ণ করতে ব্যর্থ হবে। শুধুমাত্র কাল্পনিক ফোন নম্বরগুলি এই API এর সাথে ব্যবহার করা যেতে পারে

// Turn off phone auth app verification.
FirebaseAuth.getInstance().getFirebaseAuthSettings()
   .setAppVerificationDisabledForTesting();

কলিং verifyPhoneNumber একটি কাল্পনিক সংখ্যা সঙ্গে আরম্ভ করে onCodeSent কলব্যাক, যার মাধ্যমে আপনি সংশ্লিষ্ট যাচাইকরণ কোড প্রদান করতে হবে। এটি অ্যান্ড্রয়েড এমুলেটরগুলিতে পরীক্ষার অনুমতি দেয়।

জাভা

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);

কোটলিন+কেটিএক্স

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

যখন verifyPhoneNumber বলা হয়, এটা আরম্ভ করে onVerificationCompleted সঙ্গে PhoneAuthCredential সরাসরি। এটি শুধুমাত্র কাল্পনিক ফোন নম্বর দিয়ে কাজ করে।

নিশ্চিত করুন যে এটি অক্ষম এবং গুগল প্লে স্টোরে আপনার আবেদন প্রকাশ করার সময় আপনার অ্যাপে কোন কাল্পনিক ফোন নম্বর হার্ডকোড করা নেই।

জাভা

// 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);

কোটলিন+কেটিএক্স

// 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 অবজেক্ট। দেখুন ব্যবহারকারীদের পরিচালনা

  • আপনার Firebase রিয়েলটাইম ডাটাবেস এবং ক্লাউড স্টোরেজ সিকিউরিটি রুলস , আপনি পেতে পারেন সাইন ইন থেকে ব্যবহারকারী এর অনন্য ব্যবহারকারী আইডি auth পরিবর্তনশীল, এবং এটি ব্যবহার কোন ডেটা একটি ব্যবহারকারী অ্যাক্সেস করতে পারবেন নিয়ন্ত্রন করতে পারেন।

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

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

জাভা

FirebaseAuth.getInstance().signOut();

কোটলিন+কেটিএক্স

Firebase.auth.signOut()