Google 致力于为黑人社区推动种族平等。查看具体举措
This page was translated by the Cloud Translation API.
Switch to English

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

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

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

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

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

    জাভা

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:27.0.0')
    
        // 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'
    }
    

    ফায়ারবেস অ্যান্ড্রয়েড BoM ব্যবহার করে, আপনার অ্যাপ্লিকেশন সর্বদা ফায়ারবেস অ্যান্ড্রয়েড লাইব্রেরির সামঞ্জস্যপূর্ণ সংস্করণ ব্যবহার করবে।

    (বিকল্প) বিওএম ব্যবহার না করে ফায়ারবেস লাইব্রেরি নির্ভরতা ঘোষণা করুন

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

    মনে রাখবেন যে আপনি যদি আপনার অ্যাপ্লিকেশনটিতে একাধিক ফায়ারবেস লাইব্রেরি ব্যবহার করেন তবে আমরা লাইব্রেরি সংস্করণগুলি পরিচালনা করতে 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:20.0.4'
    }
    

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

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:27.0.0')
    
        // 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'
    }
    

    ফায়ারবেস অ্যান্ড্রয়েড BoM ব্যবহার করে, আপনার অ্যাপ্লিকেশন সর্বদা ফায়ারবেস অ্যান্ড্রয়েড লাইব্রেরির সামঞ্জস্যপূর্ণ সংস্করণ ব্যবহার করবে।

    (বিকল্প) বিওএম ব্যবহার না করে ফায়ারবেস লাইব্রেরি নির্ভরতা ঘোষণা করুন

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

    মনে রাখবেন যে আপনি যদি আপনার অ্যাপ্লিকেশনটিতে একাধিক ফায়ারবেস লাইব্রেরি ব্যবহার করেন তবে আমরা লাইব্রেরি সংস্করণগুলি পরিচালনা করতে 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:20.0.4'
    }
    
  3. আপনি যদি এখনও আপনার ফায়ারবেস প্রকল্পের সাথে আপনার অ্যাপ্লিকেশনটি সংযুক্ত না করেন তবে ফায়ারবেস কনসোল থেকে এটি করুন।
  4. আপনি যদি ইতিমধ্যে ফায়ারবেস কনসোলে আপনার অ্যাপের SHA-1 হ্যাশ সেট না করে থাকেন তবে তা করুন। আপনার অ্যাপের SHA-1 হ্যাশ সন্ধানের তথ্যের জন্য আপনার ক্লায়েন্টকে প্রমাণীকরণ দেখুন।

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

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

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

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

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

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

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

অ্যাপ্লিকেশন যাচাইকরণ সক্ষম করুন

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

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

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

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

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

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

জাভা

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 আবার। যাচাইকরণ সম্পূর্ণ বা ব্যর্থ হলে পতাকা সাফ করার বিষয়ে নিশ্চিত হন ( যাচাইকরণ কলব্যাকগুলি দেখুন )।

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

ফায়ারবেস প্রেরিত এসএমএস বার্তাটিও আপনার লেখার উদাহরণে setLanguageCode পদ্ধতির মাধ্যমে 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 কলব্যাকগুলি প্রয়োগ করেন। আপনি নিজের অ্যাপ্লিকেশনটির প্রয়োজনীয়তার উপর নির্ভর করে onCodeAutoRetrievalTimeOut বাস্তবায়ন করতে পারেন।

onVirificationsCompleted (ফোনআউথক্র্রেডিয়েন্টাল)

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

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

onVerificationsFailed (ফায়ারবেস এক্সসেপশন)

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

অনকোডসেন্ট (স্ট্রিং ভেরিফিকেশনআইডি, ফোনআউথপ্রোভাইডার.ফোরেন্স রিসেন্ডিং টোকেন)

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

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

onCodeAutoRetrievalTimeOut (স্ট্রিং যাচাইকরণআইডি)

.চ্ছিক। এই পদ্ধতিটি verifyPhoneNumber জন্য নির্দিষ্ট সময়সীমা স্থির হওয়ার পরে verifyPhoneNumber করা হয় ফোন verifyPhoneNumber প্রথমে onVerificationCompleted ট্রিগার ছাড়াই onVerificationCompleted । সিম কার্ডবিহীন ডিভাইসে, এই পদ্ধতিটি তত্ক্ষণাত কল করা হয় কারণ এসএমএসের স্বতঃ-পুনরুদ্ধার সম্ভব নয় isn't

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

একটি ফোনআউথক্রেনডিয়াল অবজেক্ট তৈরি করুন

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

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

জাভা

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

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

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

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

আপনি PhoneAuthCredential - onVerificationCompleted কলব্যাকে বা PhoneAuthProvider.getCredential কল করে একটি PhoneAuthCredential অবজেক্ট পাওয়ার পরে, FirebaseAuth.signInWithCredential PhoneAuthCredential অবজেক্টটি সাইন-ইন প্রবাহটি সম্পূর্ণ করুন:

জাভা

0 বি 2 ডি 915280

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

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

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

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

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

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

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

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

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

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

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

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

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

অন্য বিকল্পটি হ'ল যদি আপনি আরও অ্যাক্সেসকে সীমাবদ্ধ রাখতে চান তবে এই ব্যবহারকারীদের নকল ব্যবহারকারী হিসাবে আলাদা করতে তাদের কাস্টম দাবির মাধ্যমে একটি পরীক্ষার ভূমিকা সেট করা

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

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

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

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

অ্যান্ড্রয়েডে, signInWithPhoneNumber কলের আগে সেট setAppVerificationDisabledForTesting() কল করুন। ম্যানুয়ালি সমাধান না করে ফোন নম্বরটি আপনাকে পাস করার অনুমতি দেয় এটি অ্যাপ্লিকেশন যাচাইকরণটি স্বয়ংক্রিয়ভাবে অক্ষম করে। মনে রাখবেন যে রিপ্যাচচএ এবং / অথবা সেফটি নেট অক্ষম করা সত্ত্বেও, সত্যিকারের ফোন নম্বর ব্যবহার করা সাইন ইন সম্পূর্ণ করতে ব্যর্থ হবে this এই 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 কল করে setAutoRetrievedSmsCodeForPhoneNumber

যখন verifyPhoneNumber করা হয়, এটি সরাসরি PhoneAuthCredential onVerificationCompleted সাথে onVerificationCompleted ট্রিগার করে। এটি কেবল কাল্পনিক ফোন নম্বর নিয়ে কাজ করে।

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

জাভা

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

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

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

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

জাভা

FirebaseAuth.getInstance().signOut();

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

Firebase.auth.signOut()