Google is committed to advancing racial equity for Black communities. See how.
इस पेज का अनुवाद Cloud Translation API से किया गया है.
Switch to English

फ़ोन नंबर का उपयोग करके Android पर Firebase के साथ प्रमाणीकरण

आप उपयोगकर्ता के फोन पर एक एसएमएस संदेश भेजकर उपयोगकर्ता को साइन इन करने के लिए फायरबेस प्रमाणीकरण का उपयोग कर सकते हैं। एसएमएस संदेश में निहित एक बार कोड का उपयोग करने में उपयोगकर्ता संकेत देता है।

अपने ऐप में फ़ोन नंबर साइन-इन जोड़ने का सबसे आसान तरीका है FirebaseUI का उपयोग करना, जिसमें एक ड्रॉप-इन साइन-इन विजेट शामिल है जो फ़ोन नंबर साइन-इन के लिए साइन-इन प्रवाह और साथ ही पासवर्ड-आधारित और फ़ेडरेटेड साइन को लागू करता है -इन। यह दस्तावेज़ बताता है कि फायरबेस एसडीके का उपयोग करके फोन नंबर साइन-इन प्रवाह को कैसे लागू किया जाए।

शुरू करने से पहले

  1. यदि आप पहले से नहीं हैं, तो अपने Android प्रोजेक्ट में Firebase जोड़ें
  2. अपने प्रोजेक्ट-लेवल build.gradle फ़ाइल में, अपने buildscript और allprojects दोनों वर्गों में Google के buildscript रिपॉजिटरी को शामिल करना सुनिश्चित करें।
  3. अपने मॉड्यूल (ऐप-स्तर) ग्रेड फ़ाइल (आमतौर पर app/build.gradle ) के लिए app/build.gradle प्रमाणीकरण एंड्रॉइड लाइब्रेरी के लिए निर्भरता जोड़ें:
    implementation 'com.google.firebase:firebase-auth:19.4.0'
  4. अगर आपने अभी तक अपने ऐप को अपने फायरबेस प्रोजेक्ट से कनेक्ट नहीं किया है, तो फायरबेस कंसोल से करें
  5. यदि आपने अपने ऐप के SHA-1 हैश को फायरबेस कंसोल में पहले से सेट नहीं किया है , तो ऐसा करें। अपने ऐप के SHA-1 हैश को खोजने के बारे में जानकारी के लिए अपने ग्राहक का प्रमाणीकरण देखें।

इसके अलावा, ध्यान दें कि फ़ोन नंबर साइन-इन के लिए एक भौतिक उपकरण की आवश्यकता होती है और यह किसी एमुलेटर पर काम नहीं करेगा।

सुरक्षा चिंतायें

केवल फोन नंबर का उपयोग करके प्रमाणीकरण, जबकि सुविधाजनक, अन्य उपलब्ध तरीकों की तुलना में कम सुरक्षित है, क्योंकि फोन नंबर का कब्ज़ा उपयोगकर्ताओं के बीच आसानी से स्थानांतरित किया जा सकता है। इसके अलावा, कई उपयोगकर्ता प्रोफाइल वाले उपकरणों पर, कोई भी उपयोगकर्ता जो एसएमएस संदेश प्राप्त कर सकता है, डिवाइस के फोन नंबर का उपयोग करके किसी खाते में प्रवेश कर सकता है।

यदि आप अपने ऐप में फ़ोन नंबर आधारित साइन-इन का उपयोग करते हैं, तो आपको इसे अधिक सुरक्षित साइन-इन विधियों के साथ प्रस्तुत करना चाहिए, और उपयोगकर्ताओं को फ़ोन नंबर साइन-इन का उपयोग करके सुरक्षा ट्रेडऑफ़ के बारे में सूचित करना चाहिए।

अपने फायरबेस प्रोजेक्ट के लिए फ़ोन नंबर साइन-इन सक्षम करें

एसएमएस द्वारा उपयोगकर्ताओं में साइन इन करने के लिए, आपको सबसे पहले अपने फायरबेस प्रोजेक्ट के लिए फोन नंबर साइन-इन विधि को सक्षम करना होगा:

  1. Firebase कंसोल में , प्रमाणीकरण अनुभाग खोलें।
  2. साइन-इन विधि पृष्ठ पर, फ़ोन नंबर साइन-इन विधि सक्षम करें।

फायरबेस का फोन नंबर साइन-इन अनुरोध कोटा इतना अधिक है कि अधिकांश ऐप प्रभावित नहीं होंगे। हालाँकि, यदि आपको फ़ोन प्रमाणीकरण वाले बहुत अधिक उपयोगकर्ताओं को साइन इन करने की आवश्यकता है, तो आपको अपनी मूल्य निर्धारण योजना को अपग्रेड करने की आवश्यकता हो सकती है। मूल्य पृष्ठ देखें।

उपयोगकर्ता के फोन पर एक सत्यापन कोड भेजें

फ़ोन नंबर साइन-इन आरंभ करने के लिए, उपयोगकर्ता को एक इंटरफ़ेस पेश करें जो उन्हें अपना फ़ोन नंबर टाइप करने के लिए प्रेरित करता है। कानूनी आवश्यकताएं बदलती हैं, लेकिन एक सर्वोत्तम अभ्यास के रूप में और अपने उपयोगकर्ताओं के लिए अपेक्षाएं निर्धारित करने के लिए, आपको उन्हें सूचित करना चाहिए कि यदि वे फ़ोन साइन-इन का उपयोग करते हैं, तो वे सत्यापन और मानक दरों के लिए एक एसएमएस संदेश प्राप्त कर सकते हैं।

उसके बाद, PhoneAuthProvider.verifyPhoneNumber विधि के लिए अपना फोन नंबर पास करें ताकि अनुरोध किया जा सके कि PhoneAuthProvider.verifyPhoneNumber उपयोगकर्ता के फोन नंबर को सत्यापित करता है। उदाहरण के लिए:

जावा

PhoneAuthProvider.getInstance().verifyPhoneNumber(
        phoneNumber,        // Phone number to verify
        60,                 // Timeout duration
        TimeUnit.SECONDS,   // Unit of timeout
        this,               // Activity (for callback binding)
        mCallbacks);        // OnVerificationStateChangedCallbacks

Kotlin + KTX

PhoneAuthProvider.getInstance().verifyPhoneNumber(
        phoneNumber, // Phone number to verify
        60, // Timeout duration
        TimeUnit.SECONDS, // Unit of timeout
        this, // Activity (for callback binding)
        callbacks) // OnVerificationStateChangedCallbacks

verifyPhoneNumber विधि verifyPhoneNumber है: यदि आप इसे कई बार कॉल करते हैं, जैसे कि किसी गतिविधि की onStart विधि में, verifyPhoneNumber विधि दूसरा एसएमएस तब तक नहीं भेजेगी जब तक कि मूल अनुरोध समाप्त न हो जाए।

यदि आप उपयोगकर्ता द्वारा साइन इन (उदाहरण के लिए, जबकि उपयोगकर्ता अपने एसएमएस ऐप का उपयोग कर रहा है) से पहले आपका ऐप बंद हो जाता है, तो आप इस व्यवहार का उपयोग फ़ोन नंबर साइन इन प्रक्रिया को फिर से शुरू करने के लिए कर सकते हैं। आप verifyPhoneNumber कॉल करने के बाद, एक ध्वज सेट करें जो इंगित करता है कि सत्यापन प्रगति पर है। फिर, अपनी गतिविधि के onSaveInstanceState विधि में ध्वज को onRestoreInstanceState और onRestoreInstanceState में ध्वज को पुनर्स्थापित करें। अंत में, अपनी गतिविधि के onStart विधि में, जांचें कि क्या सत्यापन पहले से ही प्रगति पर है, और यदि ऐसा है, तो फिर से verifyPhoneNumber कॉल करें। सत्यापन पूर्ण होने या विफल होने पर ध्वज साफ़ करना न भूलें ( सत्यापन कॉलबैक देखें)।

गतिविधि रोटेशन के स्क्रीन घुमाव और अन्य उदाहरणों को आसानी से संभालने के लिए, अपनी गतिविधि को verifyPhoneNumber विधि से पास करें। जब गतिविधि बंद हो जाएगी तो कॉलबैक ऑटो-अलग हो जाएगा, इसलिए आप कॉलबैक विधियों में यूआई संक्रमण कोड को स्वतंत्र रूप से लिख सकते हैं।

Firebase द्वारा भेजा गया एसएमएस संदेश आपके setLanguageCode उदाहरण पर setLanguageCode पद्धति के माध्यम से किसी setLanguageCode भाषा को निर्दिष्ट करके स्थानीयकृत भी किया जा सकता है।

जावा

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

Kotlin + KTX

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;

        // ...
    }
};

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

        // ...
    }
}

सत्यापन कॉलबैक

अधिकांश एप्लिकेशन में, आप onVerificationCompleted , onVerificationFailed और onCodeSent कॉलबैक कार्यान्वित करते हैं। आप अपने ऐप की आवश्यकताओं के आधार पर onCodeAutoRetrievalTimeOut को भी लागू कर सकते हैं।

onVerificationCompleted (PhoneAuthCredential)

इस विधि को दो स्थितियों में कहा जाता है:

  • तत्काल सत्यापन: कुछ मामलों में सत्यापन कोड भेजने या दर्ज करने की आवश्यकता के बिना फोन नंबर को तुरंत सत्यापित किया जा सकता है।
  • स्वतः पुनर्प्राप्ति: कुछ उपकरणों पर, Google Play सेवाएं स्वचालित रूप से आने वाले सत्यापन एसएमएस का पता लगा सकती हैं और उपयोगकर्ता कार्रवाई के बिना सत्यापन कर सकती हैं। (यह क्षमता कुछ वाहक के साथ अनुपलब्ध हो सकती है।)
किसी भी स्थिति में, उपयोगकर्ता के फ़ोन नंबर को सफलतापूर्वक सत्यापित किया गया है, और आप PhoneAuthCredential ऑब्जेक्ट का उपयोग कर सकते हैं जो उपयोगकर्ता को साइन इन करने के लिए कॉलबैक में जाता है

onVerificationFailed (FirebaseException)

इस विधि को अमान्य सत्यापन अनुरोध के जवाब में कहा जाता है, जैसे कि एक अनुरोध जो एक अमान्य फ़ोन नंबर या सत्यापन कोड निर्दिष्ट करता है।

onCodeSent (स्ट्रिंग सत्यापन आई, PhoneAuthProvider.ForceResendingToken)

वैकल्पिक। सत्यापन विधि को फोन नंबर पर एसएमएस द्वारा भेजे जाने के बाद इस विधि को कहा जाता है।

जब इस पद्धति को कॉल किया जाता है, तो अधिकांश ऐप एक यूआई प्रदर्शित करते हैं जो उपयोगकर्ता को एसएमएस संदेश से सत्यापन कोड टाइप करने के लिए प्रेरित करता है। (उसी समय, स्वतः-सत्यापन पृष्ठभूमि में आगे बढ़ सकता है।) फिर, उपयोगकर्ता सत्यापन कोड टाइप करने के बाद, आप सत्यापन कोड और सत्यापन आईडी का उपयोग कर सकते हैं जो PhoneAuthCredential ऑब्जेक्ट बनाने के लिए विधि में पारित किया गया था, जो आप उपयोगकर्ता में साइन इन करने के लिए बारी-बारी से उपयोग कर सकते हैं। हालाँकि, कुछ ऐप्स प्रतीक्षा कर सकते हैं जब तक कि onCodeAutoRetrievalTimeOut सत्यापन कोड UI (अनुशंसित नहीं) प्रदर्शित करने से पहले कॉल किया जाता है।

onCodeAutoRetrievalTimeOut (स्ट्रिंग सत्यापन आई डी)

वैकल्पिक। के बाद समय समाप्त अवधि के लिए निर्दिष्ट इस विधि कहा जाता है verifyPhoneNumber बिना पारित किया है onVerificationCompleted पहले ट्रिगर। सिम कार्ड के बिना उपकरणों पर, इस विधि को तुरंत कहा जाता है क्योंकि एसएमएस ऑटो-रिट्रीवल संभव नहीं है।

कुछ एप्लिकेशन उपयोगकर्ता इनपुट को तब तक रोकते हैं जब तक कि ऑटो-सत्यापन अवधि समाप्त नहीं हो जाती है, और उसके बाद ही एक यूआई प्रदर्शित करता है जो उपयोगकर्ता को एसएमएस संदेश से सत्यापन कोड टाइप करने के लिए संकेत देता है (अनुशंसित नहीं है)।

PhoneAuthCredential ऑब्जेक्ट बनाएँ

उपयोगकर्ता द्वारा सत्यापन कोड में प्रवेश करने के बाद, Firebase उपयोगकर्ता के फ़ोन पर भेजा जाता है, PhoneAuthCredential ऑब्जेक्ट बनाएँ, सत्यापन कोड और सत्यापन ID का उपयोग करके जो onCodeSent या onCodeAutoRetrievalTimeOut कॉलबैक में पारित किया गया था। (जब onVerificationCompleted को कॉल किया जाता है, तो आपको सीधे PhoneAuthCredential ऑब्जेक्ट मिल जाता है, इसलिए आप इस चरण को छोड़ सकते हैं।)

बनाने के लिए PhoneAuthCredential वस्तु, फोन PhoneAuthProvider.getCredential :

जावा

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

Kotlin + KTX

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

उपयोगकर्ता में साइन इन करें

आपको PhoneAuthCredential ऑब्जेक्ट मिलने के बाद, चाहे onVerificationCompleted कॉलबैक में या PhoneAuthProvider.getCredential को कॉल 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();
                        // ...
                    } 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
                        }
                    }
                }
            });
}

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

सफेद फोन नंबर के साथ टेस्ट करें

आप फायरबेस कंसोल के माध्यम से विकास के लिए फोन नंबर को सफेद कर सकते हैं। सफेद फोन नंबर से ये लाभ मिलते हैं:

  • अपने उपयोग कोटा का उपभोग किए बिना फोन नंबर प्रमाणीकरण का परीक्षण करें।
  • एक वास्तविक एसएमएस संदेश भेजे बिना फोन नंबर प्रमाणीकरण का परीक्षण करें।
  • थ्रॉटल किए बिना एक ही फोन नंबर के साथ लगातार परीक्षण चलाएं। यह ऐप स्टोर की समीक्षा प्रक्रिया के दौरान अस्वीकृति के जोखिम को कम करता है यदि समीक्षक परीक्षण के लिए उसी फोन नंबर का उपयोग करता है।
  • बिना किसी अतिरिक्त प्रयास के विकास के वातावरण में आसानी से परीक्षण करें, जैसे कि आईओएस सिम्युलेटर में विकसित करने की क्षमता या Google Play सेवाओं के बिना एंड्रॉइड एमुलेटर।
  • सामान्य रूप से उत्पादन वातावरण में वास्तविक फोन नंबरों पर लागू सुरक्षा जांच द्वारा अवरुद्ध किए बिना एकीकरण परीक्षण लिखें।

श्वेतसूची में फ़ोन नंबर इन आवश्यकताओं को पूरा करना चाहिए:

  1. सुनिश्चित करें कि आप काल्पनिक संख्याओं का उपयोग करते हैं जो पहले से मौजूद नहीं हैं। फायरबेस ऑथेंटिकेशन आपको वास्तविक उपयोगकर्ताओं द्वारा उपयोग किए जाने वाले मौजूदा फोन नंबरों को व्हाइटलाइन करने की अनुमति नहीं देता है। एक विकल्प यूएस टेस्ट फोन नंबर के रूप में 555 उपसर्ग संख्या का उपयोग करना है, उदाहरण के लिए: +1 650-555-3434
  2. लंबाई और अन्य बाधाओं के लिए फ़ोन नंबर को सही ढंग से स्वरूपित करना होगा। वे अभी भी एक वास्तविक उपयोगकर्ता के फोन नंबर के रूप में उसी सत्यापन से गुजरेंगे।
  3. आप विकास के लिए 10 फोन नंबर जोड़ सकते हैं।
  4. परीक्षण फ़ोन नंबर / कोड का उपयोग करें जो अक्सर अनुमान लगाने और बदलने में कठिन होते हैं।

श्वेतसूची फोन नंबर और सत्यापन कोड

  1. Firebase कंसोल में , प्रमाणीकरण अनुभाग खोलें।
  2. साइन इन विधि टैब में, फ़ोन प्रदाता को सक्षम करें यदि आपने पहले से नहीं किया है।
  3. Accordion मेनू का परीक्षण करने के लिए फ़ोन नंबर खोलें।
  4. उदाहरण के लिए, वह फ़ोन नंबर प्रदान करें जिसे आप परीक्षण करना चाहते हैं: +1 650-555-3434
  5. उस विशिष्ट संख्या के लिए 6-अंकीय सत्यापन कोड प्रदान करें, उदाहरण के लिए: 654321
  6. संख्या जोड़ें । यदि कोई आवश्यकता है, तो आप संबंधित पंक्ति पर मँडरा और ट्रैश आइकन पर क्लिक करके फ़ोन नंबर और उसके कोड को हटा सकते हैं।

मैनुअल परीक्षण

आप सीधे अपने आवेदन में एक सफेद फोन नंबर का उपयोग शुरू कर सकते हैं। यह आपको कोटा मुद्दों या थ्रॉटलिंग में चलने के बिना विकास चरणों के दौरान मैनुअल परीक्षण करने की अनुमति देता है। आप Google Play Services को इंस्टॉल किए बिना iOS सिम्युलेटर या एंड्रॉइड एमुलेटर से भी सीधे परीक्षण कर सकते हैं।

जब आप सफ़ेद फ़ोन नंबर प्रदान करते हैं और सत्यापन कोड भेजते हैं, तो कोई वास्तविक एसएमएस नहीं भेजा जाता है। इसके बजाय, आपको साइन इन को पूरा करने के लिए पहले से कॉन्फ़िगर किया गया सत्यापन कोड प्रदान करना होगा।

साइन-इन पूरा होने पर, उस फोन नंबर के साथ एक फायरबेस उपयोगकर्ता बनाया जाता है। उपयोगकर्ता के पास वास्तविक फोन नंबर उपयोगकर्ता के समान व्यवहार और गुण हैं, और उसी तरह से Realtime Database / Cloud Firestore और अन्य सेवाओं तक पहुंच सकते हैं। इस प्रक्रिया के दौरान की गई आईडी टोकन में वास्तविक फोन नंबर उपयोगकर्ता के समान हस्ताक्षर हैं।

एक अन्य विकल्प इन उपयोगकर्ताओं पर कस्टम दावों के माध्यम से एक परीक्षण भूमिका निर्धारित करना है ताकि यदि आप आगे पहुंच को प्रतिबंधित करना चाहते हैं, तो उन्हें नकली उपयोगकर्ता के रूप में अंतर कर सकें।

एकीकरण जांच

मैनुअल परीक्षण के अलावा, फायरबेस प्रमाणीकरण फोन एपीआई परीक्षण के लिए एकीकरण परीक्षण लिखने में मदद करने के लिए एपीआई प्रदान करता है। ये API iOS में वेब और साइलेंट पुश नोटिफिकेशन में reCAPTCHA आवश्यकता को अक्षम करके ऐप वेरिफिकेशन को अक्षम कर देता है। यह इन प्रवाह में स्वचालन परीक्षण को संभव बनाता है और लागू करने में आसान होता है। इसके अलावा, वे एंड्रॉइड पर तत्काल सत्यापन प्रवाह का परीक्षण करने की क्षमता प्रदान करने में मदद करते हैं।

Android पर आप बिना किसी अतिरिक्त API कॉल के आसानी से अपने श्वेतसूची वाले फ़ोन नंबरों का उपयोग कर सकते हैं। एक verifyPhoneNumber नंबर के साथ 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.
PhoneAuthProvider.getInstance().verifyPhoneNumber(
        phoneNum, 30L /*timeout*/, TimeUnit.SECONDS,
        this, 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) {
                 // ...
            }

        });

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.
PhoneAuthProvider.getInstance().verifyPhoneNumber(
        phoneNum, 30L /*timeout*/, TimeUnit.SECONDS,
        this, 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) {
        // ...
    }
})

इसके अतिरिक्त, आप एंड्रॉइड में ऑटो-रिट्रीगल फ़्लो का परीक्षण कर सकते हैं, जिसमें श्वेतसूची संख्या और ऑटो-पुनर्प्राप्ति के लिए इसके संबंधित सत्यापन कोड को setAutoRetrievedSmsCodeForPhoneNumber कॉल करके परीक्षण कर सकते हैं।

जब verifyPhoneNumber कहा जाता है, तो यह सीधे onVerificationCompleted साथ PhoneAuthCredential जाता है। यह केवल श्वेतसूची वाले फोन नंबरों के साथ काम करता है।

सुनिश्चित करें कि यह अक्षम है और Google Play स्टोर पर अपना एप्लिकेशन प्रकाशित करते समय आपके ऐप में कोई भी श्वेतसूची वाले फ़ोन नंबर हार्डकोड नहीं हैं।

जावा

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

PhoneAuthProvider phoneAuthProvider = PhoneAuthProvider.getInstance();
phoneAuthProvider.verifyPhoneNumber(
        phoneNumber,
        60L,
        TimeUnit.SECONDS,
        this, /* activity */
        new PhoneAuthProvider.OnVerificationStateChangedCallbacks() {
            @Override
            public void onVerificationCompleted(PhoneAuthCredential credential) {
                // Instant verification is applied and a credential is directly returned.
                // ...
            }

            // ...
        });

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 phoneAuthProvider = PhoneAuthProvider.getInstance()
phoneAuthProvider.verifyPhoneNumber(
        phoneNumber,
        60L,
        TimeUnit.SECONDS,
        this, /* activity */
        object : PhoneAuthProvider.OnVerificationStateChangedCallbacks() {
            override fun onVerificationCompleted(credential: PhoneAuthCredential) {
                // Instant verification is applied and a credential is directly returned.
                // ...
            }

            // ...
        })

अगला कदम

पहली बार एक उपयोगकर्ता के संकेत के बाद, एक नया उपयोगकर्ता खाता बनाया जाता है और क्रेडेंशियल से जुड़ा होता है - अर्थात्, उपयोगकर्ता नाम और पासवर्ड, फोन नंबर, या प्रदाता की जानकारी जो उपयोगकर्ता द्वारा साइन इन की जाती है। इस नए खाते को आपके फायरबेस प्रोजेक्ट के हिस्से के रूप में संग्रहीत किया जाता है, और इसका उपयोग आपकी परियोजना के प्रत्येक ऐप के उपयोगकर्ता की पहचान करने के लिए किया जा सकता है, भले ही उपयोगकर्ता साइन इन कैसे करे।

  • अपने ऐप्स में, आप उपयोगकर्ता की मूल प्रोफ़ाइल जानकारी FirebaseUser ऑब्जेक्ट से प्राप्त कर सकते हैं। उपयोगकर्ता प्रबंधित करें देखें।

  • अपने फायरबेस रियलटाइम डेटाबेस और क्लाउड स्टोरेज सिक्योरिटी रूल्स में , आप हस्ताक्षरित-इन यूजर की यूनिक यूजर आईडी को auth वैरिएबल से प्राप्त कर सकते हैं, और इसका उपयोग यह नियंत्रित करने के लिए कर सकते हैं कि उपयोगकर्ता किस डेटा तक पहुंच सकता है।

आप उपयोगकर्ताओं को किसी मौजूदा उपयोगकर्ता खाते में कई प्रदाता प्रदाता को प्रमाणित करके अपने ऐप में साइन इन करने की अनुमति दे सकते हैं।

एक उपयोगकर्ता प्रस्थान करने के लिए फोन signOut :

जावा

FirebaseAuth.getInstance().signOut();

Kotlin + KTX

Firebase.auth.signOut()