Android पर Firebase की फ़ोन नंबर की पुष्टि करने की सुविधा का इस्तेमाल शुरू करना

इस पेज पर, Android ऐप्लिकेशन में Firebase Phone Number Verification का इस्तेमाल शुरू करने का तरीका बताया गया है. इस सुविधा के बारे में सामान्य जानकारी पाने के लिए, खास जानकारी देखें.

इस पेज पर दिए गए चरणों का पालन करके, Firebase PNV के लिए यूज़र फ़्लो को तुरंत लागू किया जा सकता है. टेस्टिंग के लिए, आपको सिर्फ़ टेस्टिंग के लिए इस्तेमाल होने वाला टोकन जनरेट करना होगा. यह टोकन, किसी नकली फ़ोन नंबर पर ले जाता है. इस टेस्ट टोकन का इस्तेमाल करके, अपने ऐप्लिकेशन में Firebase PNV को जोड़ा जा सकता है. इसके लिए, आपको बिलिंग खाते या असली सिम वाले डिवाइस की ज़रूरत नहीं होगी.

जब आप अपने ऐप्लिकेशन में Firebase PNV के उपयोगकर्ता अनुभव से संतुष्ट हो जाएं, तो अपने ऐप्लिकेशन को प्रोडक्शन के लिए तैयार करने के लिए, कुछ और चरणों का पालन करें.

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

  • अपने Android प्रोजेक्ट में Firebase जोड़ें. ऐसा तब करें, जब आपने पहले से ही ऐसा न किया हो.

  • पक्का करें कि आपका ऐप्लिकेशन इन ज़रूरी शर्तों को पूरा करता हो:

    • आपके ऐप्लिकेशन का minSdk, 24 (Android 7.0) या इसके बाद का वर्शन हो.
    • डिवाइस या एम्युलेटर में Google Play services मौजूद हो. एम्युलेटर के लिए, ऐसी सिस्टम इमेज का इस्तेमाल करें जिसमें Google Play शामिल हो.
    • प्रोडक्शन में असली फ़ोन नंबर की पुष्टि करने के लिए, डिवाइस में Android 9 (एपीआई लेवल 28) या इसके बाद का वर्शन होना चाहिए. साथ ही, उसमें यह सुविधा देने वाली मोबाइल और इंटरनेट सेवा देने वाली कंपनी का सिम होना चाहिए. इस पेज पर बताए गए टेस्ट मोड के लिए, असली सिम की ज़रूरत नहीं होती.

1. अपने ऐप्लिकेशन में Firebase PNV लाइब्रेरी जोड़ना

मॉड्यूल (ऐप्लिकेशन-लेवल) की Gradle फ़ाइल (आम तौर पर <project>/<app-module>/build.gradle.kts या <project>/<app-module>/build.gradle) में, Android के लिए Firebase Phone Number Verification लाइब्रेरी की डिपेंडेंसी जोड़ें. हमारा सुझाव है कि लाइब्रेरी के वर्शन को कंट्रोल करने के लिए, Firebase Android BoM का इस्तेमाल करें.

dependencies {
    // Import the BoM for the Firebase platform
    implementation(platform("com.google.firebase:firebase-bom:35.1.0"))

    // Add the dependencies for the Firebase Phone Number Verification libraries
    // When using the BoM, you don't specify versions in Firebase library dependencies
    implementation("com.google.firebase:firebase-pnv")
}

Firebase Android BoM का इस्तेमाल करने पर, आपका ऐप्लिकेशन हमेशा Firebase Android लाइब्रेरी के साथ काम करने वाले वर्शन का इस्तेमाल करेगा.

(दूसरा तरीका)  BoM का इस्तेमाल किए बिना Firebase लाइब्रेरी डिपेंडेंसी जोड़ें

अगर आपको Firebase BoM का इस्तेमाल नहीं करना है, तो आपको Firebase लाइब्रेरी के हर वर्शन को उसकी डिपेंडेंसी लाइन में बताना होगा.

ध्यान दें कि अगर आपके ऐप्लिकेशन में एक से ज़्यादा Firebase लाइब्रेरी इस्तेमाल की जाती हैं, तो हमारा सुझाव है कि लाइब्रेरी के वर्शन मैनेज करने के लिए, BoM का इस्तेमाल करें. इससे यह पक्का किया जा सकेगा कि सभी वर्शन साथ काम करते हों.

dependencies {
    // Add the dependencies for the Firebase Phone Number Verification libraries
    // When NOT using the BoM, you must specify versions in Firebase library dependencies
    implementation("com.google.firebase:firebase-pnv:17.0.0")
}

2. टेस्ट मोड में Firebase PNV लाइब्रेरी को शुरू करना

  1. Firebase कंसोल में, सुरक्षा > फ़ोन नंबर की मदद से खाते की पुष्टि करना > सेटिंग > टेस्टिंग टैब पर जाएं.

  2. टोकन जनरेट करें पर क्लिक करें. इसके बाद, देश का कोड चुनें और फिर टोकन बनाने और उसे कॉपी करने के लिए, टोकन जनरेट करें पर दोबारा क्लिक करें.

  3. टोकन को अपने सोर्स कोड में हार्डकोड किए बिना, अपने ऐप्लिकेशन के डीबग बिल्ड के लिए उपलब्ध कराएं. टोकन को क्रेडेंशियल की तरह इस्तेमाल करें और इसे वर्शन कंट्रोल से बाहर रखें. उदाहरण के लिए, इसे अपने प्रोजेक्ट की local.properties फ़ाइल में जोड़ें. इस फ़ाइल को वर्शन कंट्रोल में नहीं जोड़ा जाता:

    fpnv.testToken=COPIED_TOKEN_STRING
    

    इसके बाद, इसे अपने मॉड्यूल (ऐप्लिकेशन-लेवल) की build.gradle.kts फ़ाइल में BuildConfig फ़ील्ड के तौर पर दिखाएं. यहां दिए गए उदाहरण में, FPNV_TEST_TOKEN एनवायरमेंट वैरिएबल को भी पढ़ा जाता है. यह उन सीआई सर्वर पर काम आता है जिनमें local.properties फ़ाइल नहीं होती. रिलीज़ के लिए तैयार बिल्ड को खाली वैल्यू मिलती है:

    // At the top of the file:
    import java.util.Properties
    
    val localProperties = Properties().apply {
        rootProject.file("local.properties").takeIf { it.exists() }
            ?.inputStream()?.use { load(it) }
    }
    val fpnvTestToken = System.getenv("FPNV_TEST_TOKEN")?.takeIf { it.isNotEmpty() }
        ?: localProperties.getProperty("fpnv.testToken", "")
    
    android {
        buildFeatures {
            buildConfig = true
        }
        buildTypes {
            debug {
                buildConfigField("String", "FPNV_TEST_TOKEN", "\"$fpnvTestToken\"")
            }
            release {
                buildConfigField("String", "FPNV_TEST_TOKEN", "\"\"")
            }
        }
    }
    
  4. अपने ऐप्लिकेशन में, हर ऐप्लिकेशन प्रोसेस के लिए एक बार टेस्ट सेशन चालू करें:

    Kotlin

    FirebasePhoneNumberVerification.getInstance(), डिफ़ॉल्ट FirebaseApp के लिए हर बार एक ही इंस्टेंस दिखाता है. इसलिए, सभी Firebase PNV कॉल के लिए इसका इस्तेमाल करें.

    हर ऐप्लिकेशन प्रोसेस के लिए, enableTestSession() को सिर्फ़ एक बार कॉल करें. दूसरी बार कॉल करने पर, गड़बड़ी के कोड TEST_SESSION_ALREADY_ENABLED के साथ FirebasePhoneNumberVerificationException दिखता है. इसलिए, इसे किसी ऐसे Activity से कॉल न करें जिसे फिर से बनाया जा सकता है. उदाहरण के लिए, स्क्रीन के घूमने पर. इसके बजाय, इसे अपनी Application क्लास से कॉल करें:

    import android.app.Application
    import android.util.Log
    import com.google.firebase.pnv.FirebasePhoneNumberVerification
    
    class MyApplication : Application() {
        override fun onCreate() {
            super.onCreate()
            if (!BuildConfig.DEBUG) return
            if (BuildConfig.FPNV_TEST_TOKEN.isEmpty()) {
                Log.w("MyApplication", "No Firebase PNV test token; test mode is off.")
                return
            }
            FirebasePhoneNumberVerification.getInstance()
                .enableTestSession(BuildConfig.FPNV_TEST_TOKEN)
        }
    }
    

    अपने ऐप्लिकेशन मेनिफ़ेस्ट में क्लास को रजिस्टर करें:

    <application
        android:name=".MyApplication"
        ... >
    

टेस्ट टोकन का टीटीएल सात दिनों का होता है. इसके बाद, टेस्ट सेशन चालू करने के लिए आपको नया टोकन जनरेट करना होगा. जब तक getVerifiedPhoneNumber() को कॉल नहीं किया जाता, तब तक समयसीमा खत्म होने वाले टोकन की वजह से कोई गड़बड़ी नहीं होती. टेस्ट टोकन, उन फ़िज़िकल डिवाइसों और एम्युलेटर पर काम करते हैं जिनमें Google Play services मौजूद होती हैं. इससे, आपके ऐप्लिकेशन में उपयोगकर्ता अनुभव का प्रोटोटाइप बनाने में मदद मिलती है. सीआई/सीडी में टेस्टिंग के लिए भी इनका इस्तेमाल किया जा सकता है. इसके लिए, आपको हर सात दिन में कम से कम एक बार टोकन बदलना होगा.

टेस्ट मोड में आपके ऐप्लिकेशन को मिलने वाले फ़ोन नंबर टोकन, प्रोडक्शन टोकन की तरह साइन किए जाते हैं. हालांकि, उनमें "test_number": true दावा शामिल होता है. पक्का करें कि आपका प्रोडक्शन बैकएंड, इस दावे वाले टोकन को अस्वीकार करता हो.

3. सुझाव: देखें कि Firebase PNV काम करता है या नहीं

ऐप्लिकेशन लॉन्च होने पर, यह सुझाव दिया जाता है कि आप यह जांच लें कि डिवाइस और उसका सिम कार्ड Firebase PNV के साथ काम करता है या नहीं. इससे आपको यह तय करने में मदद मिलेगी कि नंबर डालने वाला यूज़र इंटरफ़ेस (यूआई) या जानकारी देने वाला यूज़र इंटरफ़ेस (यूआई) कब दिखाना है. यह पहले से की जाने वाली जांच है. इसके लिए, उपयोगकर्ता की सहमति की ज़रूरत नहीं होती. इस टेस्ट के नतीजे का इस्तेमाल करके, यह तय किया जा सकता है कि Firebase PNV फ़्लो शुरू करना है या फ़ोन नंबर की पुष्टि करने की सुविधा के लिए कोई दूसरा तरीका इस्तेमाल करना है. जैसे, एसएमएस.

यह देखने के लिए कि डिवाइस पर Health Connect काम करता है या नहीं, getVerificationSupportInfo() मेथड को कॉल करें. जब आपके पास कोई टेस्ट सेशन चालू होता है, तब यह तरीका हमेशा एक सूची दिखाता है. इसमें टेस्ट टोकन के लिए, काम करने वाली एक एंट्री होती है. इसके लिए, Firebase PNV बैकएंड से संपर्क करने की ज़रूरत नहीं होती. इसका मतलब है कि टेस्ट मोड में, काम न करने वाले डिवाइस के लिए फ़ॉलबैक का इस्तेमाल नहीं किया जा सकता. बाद में, ऐप्लिकेशन को प्रोडक्शन के लिए तैयार करने के बाद, यह तरीका डिवाइस में मौजूद हर सिम के लिए नतीजा दिखाएगा.

Kotlin

val fpnv = FirebasePhoneNumberVerification.getInstance()

// Check all SIMs for support.
fpnv.getVerificationSupportInfo()
    .addOnSuccessListener { results ->
        if (results.any { it.isSupported() }) {
            // At least one SIM is supported; okay to call getVerifiedPhoneNumber
            // (see the next step).
        } else {
            // No SIMs are supported, so fall back to SMS verification.
        }
    }
    .addOnFailureListener { e ->
        // Handle error.
    }

4. पुष्टि की प्रोसेस शुरू करना

Firebase PNV फ़्लो शुरू करने के लिए, getVerifiedPhoneNumber() तरीके को कॉल करें. Activity पास करें, क्योंकि यह तरीका ऐसी स्क्रीन जहां OAuth के लिए सहमति दी जाती है दिखाता है. अगर Context, Activity नहीं है, जैसे कि आपका Application कॉन्टेक्स्ट, तो गड़बड़ी का कोड ACTIVITY_CONTEXT_REQUIRED दिखता है.

Kotlin

fpnv.getVerifiedPhoneNumber(this@MainActivity)
    .addOnSuccessListener { result ->
        // In test mode, this phone number will have a valid country code,
        // followed by all zeros.
        val phoneNumber = result.getPhoneNumber() // For display only.
        val token = result.getToken()

        // Verification successful. Send token to your backend, which reads
        // the verified phone number from it. (See Next steps.)
    }
    .addOnFailureListener { e ->
        // Handle failures, such as the user declining consent or a network
        // error.
    }

getVerifiedPhoneNumber() तरीके से, फ़ोन नंबर की पुष्टि करने की पूरी प्रोसेस पूरी की जाती है. इसमें ये शामिल हैं:

  • Android Credential Manager का इस्तेमाल करके, उपयोगकर्ता का फ़ोन नंबर शेयर करने के लिए उसकी सहमति लेना.
  • Firebase PNV बैकएंड से अनुरोध करना.
  • डिवाइस के लिए पुष्टि किए गए फ़ोन नंबर वाला टोकन वापस करना (प्रोडक्शन ऐप्लिकेशन में, ऐसा बिलिंग के समय होता है).

5. गड़बड़ियां ठीक करना

जब कोई Firebase PNV कॉल पूरा नहीं हो पाता है, तो अपवाद के तौर पर FirebasePhoneNumberVerificationException दिखता है. इसके errorCode का इस्तेमाल करके तय करें कि आगे क्या करना है. उदाहरण के लिए, जब उपयोगकर्ता सहमति देने से मना कर दे, तो एसएमएस से पुष्टि करने का विकल्प इस्तेमाल करें. हर गड़बड़ी के कोड, उसके होने के समय, और सुझाई गई कार्रवाई के बारे में जानने के लिए, Android पर Firebase PNV से जुड़ी गड़बड़ियां ठीक करना लेख पढ़ें.

अगले चरण

  • इस पेज पर, यूनिफ़ाइड और सिंगल-कॉल एपीआई का इस्तेमाल करके, Firebase PNV के साथ इंटिग्रेट करने का तरीका बताया गया है. सिर्फ़ एक तरीके को कॉल करने से, Firebase PNV यूज़र फ़्लो को पूरी तरह से मैनेज किया जा सकता है. इसमें उपयोगकर्ता की सहमति लेने से लेकर, Firebase PNV बैकएंड पर ज़रूरी नेटवर्क कॉल करने तक की प्रोसेस शामिल है. इस तरीके का इस्तेमाल करके, इंटिग्रेशन के चरणों को कम किया जा सकता है.

    ज़्यादातर डेवलपर को इस एपीआई का इस्तेमाल करने का सुझाव दिया जाता है. हालांकि, अगर आपकी कुछ ऐसी ज़रूरतें हैं जो लाइब्रेरी से पूरी नहीं होती हैं, तो कस्टम फ़्लो लागू करने के बारे में जानकारी पाने के लिए, Firebase Phone Number Verification फ़्लो को पसंद के मुताबिक बनाएं पेज देखें.

  • अगर पुष्टि किए गए फ़ोन नंबर का इस्तेमाल ऐप्लिकेशन क्लाइंट के बाहर किया जाता है, तो आपको फ़ोन नंबर के बजाय टोकन पास करना चाहिए. इससे, इस्तेमाल करते समय उसकी इंटिग्रिटी की पुष्टि की जा सकती है. Firebase PNV टोकन की पुष्टि करना देखें.

  • उपयोगकर्ताओं को उनके पुष्टि किए गए फ़ोन नंबर से Firebase Authentication में साइन इन कराने के लिए, Firebase Phone Number Verification का इस्तेमाल करके Firebase से पुष्टि करें देखें.

  • सैंपल के तौर पर पूरा ऐप्लिकेशन बनाने के सिलसिलेवार निर्देशों के लिए, Firebase Phone Number Verification कोडलैब आज़माएं.

  • अपने ऐप्लिकेशन के Firebase PNV फ़्लो और बैकएंड इंटिग्रेशन को लागू करने और टेस्ट करने के बाद, अपने ऐप्लिकेशन को प्रोडक्शन में डाला जा सकता है. इससे आपको पुष्टि किए गए असली फ़ोन नंबर मिलने शुरू हो जाएंगे. प्रोडक्शन मोड पर अपग्रेड करना देखें.

  • पूरे एपीआई के लिए, Firebase PNV एपीआई का रेफ़रंस देखें.