Android पर पासवर्ड-आधारित खातों का इस्तेमाल करके Firebase से पुष्टि करें

Firebase Authentication का इस्तेमाल करके, अपने उपयोगकर्ताओं को उनके ईमेल पतों और पासवर्ड का इस्तेमाल करके Firebase से पुष्टि करने की अनुमति दी जा सकती है. साथ ही, अपने ऐप्लिकेशन के पासवर्ड पर आधारित खातों को मैनेज किया जा सकता है.

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

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

  2. अगर आपने अब तक अपने ऐप्लिकेशन को Firebase प्रोजेक्ट से कनेक्ट नहीं किया है, तो Firebase कंसोल में जाकर ऐसा करें.
  3. ईमेल/पासवर्ड से साइन-इन करने की सुविधा चालू करें:
    1. Firebase कंसोल में, Auth सेक्शन खोलें.
    2. साइन इन करने का तरीका टैब पर, ईमेल/पासवर्ड से साइन इन करने का तरीका चालू करें. इसके बाद, सेव करें पर क्लिक करें.
  4. अपनी मॉड्यूल (ऐप्लिकेशन-लेवल) की Gradle फ़ाइल (आम तौर पर <project>/<app-module>/build.gradle.kts या <project>/<app-module>/build.gradle) में, Android के लिए Firebase Authentication लाइब्रेरी की डिपेंडेंसी जोड़ें. हमारा सुझाव है कि लाइब्रेरी के वर्शन को कंट्रोल करने के लिए, Firebase Android BoM का इस्तेमाल करें.

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:34.0.0"))
    
        // Add the dependency for the Firebase Authentication library
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-auth")
    }

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

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

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

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

    dependencies {
        // Add the dependency for the Firebase Authentication library
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-auth:24.0.0")
    }

पासवर्ड वाला खाता बनाना

पासवर्ड की मदद से नया उपयोगकर्ता खाता बनाने के लिए, अपने ऐप्लिकेशन की साइन-इन गतिविधि में यह तरीका अपनाएं:

  1. साइन-अप गतिविधि के onCreate तरीके में, FirebaseAuth ऑब्जेक्ट का शेयर किया गया इंस्टेंस पाएं:

    Kotlin

    private lateinit var auth: FirebaseAuth
    // ...
    // Initialize Firebase Auth
    auth = Firebase.auth

    Java

    private FirebaseAuth mAuth;
    // ...
    // Initialize Firebase Auth
    mAuth = FirebaseAuth.getInstance();
  2. अपनी गतिविधि शुरू करते समय, देखें कि उपयोगकर्ता ने फ़िलहाल साइन इन किया है या नहीं:

    Kotlin

    public override fun onStart() {
        super.onStart()
        // Check if user is signed in (non-null) and update UI accordingly.
        val currentUser = auth.currentUser
        if (currentUser != null) {
            reload()
        }
    }

    Java

    @Override
    public void onStart() {
        super.onStart();
        // Check if user is signed in (non-null) and update UI accordingly.
        FirebaseUser currentUser = mAuth.getCurrentUser();
        if(currentUser != null){
            reload();
        }
    }
  3. जब कोई नया उपयोगकर्ता, आपके ऐप्लिकेशन के साइन-अप फ़ॉर्म का इस्तेमाल करके साइन अप करता है, तो खाते की पुष्टि करने के लिए, वे सभी नए चरण पूरे करें जिनकी आपके ऐप्लिकेशन को ज़रूरत है. जैसे, यह पुष्टि करना कि नए खाते का पासवर्ड सही तरीके से टाइप किया गया है और वह पासवर्ड से जुड़ी आपकी ज़रूरी शर्तों को पूरा करता है.
  4. नए उपयोगकर्ता का ईमेल पता और पासवर्ड createUserWithEmailAndPassword को भेजकर, नया खाता बनाएं:

    Kotlin

    auth.createUserWithEmailAndPassword(email, password)
        .addOnCompleteListener(this) { task ->
            if (task.isSuccessful) {
                // Sign in success, update UI with the signed-in user's information
                Log.d(TAG, "createUserWithEmail:success")
                val user = auth.currentUser
                updateUI(user)
            } else {
                // If sign in fails, display a message to the user.
                Log.w(TAG, "createUserWithEmail:failure", task.exception)
                Toast.makeText(
                    baseContext,
                    "Authentication failed.",
                    Toast.LENGTH_SHORT,
                ).show()
                updateUI(null)
            }
        }

    Java

    mAuth.createUserWithEmailAndPassword(email, password)
            .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, "createUserWithEmail:success");
                        FirebaseUser user = mAuth.getCurrentUser();
                        updateUI(user);
                    } else {
                        // If sign in fails, display a message to the user.
                        Log.w(TAG, "createUserWithEmail:failure", task.getException());
                        Toast.makeText(EmailPasswordActivity.this, "Authentication failed.",
                                Toast.LENGTH_SHORT).show();
                        updateUI(null);
                    }
                }
            });
    अगर नया खाता बन जाता है, तो उपयोगकर्ता उसमें साइन इन हो जाता है. कॉलबैक में, उपयोगकर्ता के खाते का डेटा पाने के लिए getCurrentUser तरीके का इस्तेमाल किया जा सकता है.

किसी उपयोगकर्ता को ईमेल पते और पासवर्ड की मदद से साइन इन करना

पासवर्ड की मदद से किसी उपयोगकर्ता के साइन इन करने का तरीका, नया खाता बनाने के तरीके जैसा ही होता है. अपने ऐप्लिकेशन में साइन-इन करने की गतिविधि में, यह तरीका अपनाएं:

  1. साइन-इन करने की गतिविधि के onCreate तरीके में, FirebaseAuth ऑब्जेक्ट का शेयर किया गया इंस्टेंस पाएं:

    Kotlin

    private lateinit var auth: FirebaseAuth
    // ...
    // Initialize Firebase Auth
    auth = Firebase.auth

    Java

    private FirebaseAuth mAuth;
    // ...
    // Initialize Firebase Auth
    mAuth = FirebaseAuth.getInstance();
  2. अपनी गतिविधि शुरू करते समय, देखें कि उपयोगकर्ता ने फ़िलहाल साइन इन किया है या नहीं:

    Kotlin

    public override fun onStart() {
        super.onStart()
        // Check if user is signed in (non-null) and update UI accordingly.
        val currentUser = auth.currentUser
        if (currentUser != null) {
            reload()
        }
    }

    Java

    @Override
    public void onStart() {
        super.onStart();
        // Check if user is signed in (non-null) and update UI accordingly.
        FirebaseUser currentUser = mAuth.getCurrentUser();
        if(currentUser != null){
            reload();
        }
    }
  3. जब कोई उपयोगकर्ता आपके ऐप्लिकेशन में साइन इन करता है, तो उपयोगकर्ता का ईमेल पता और पासवर्ड signInWithEmailAndPassword को पास करें:

    Kotlin

    auth.signInWithEmailAndPassword(email, password)
        .addOnCompleteListener(this) { task ->
            if (task.isSuccessful) {
                // Sign in success, update UI with the signed-in user's information
                Log.d(TAG, "signInWithEmail:success")
                val user = auth.currentUser
                updateUI(user)
            } else {
                // If sign in fails, display a message to the user.
                Log.w(TAG, "signInWithEmail:failure", task.exception)
                Toast.makeText(
                    baseContext,
                    "Authentication failed.",
                    Toast.LENGTH_SHORT,
                ).show()
                updateUI(null)
            }
        }

    Java

    mAuth.signInWithEmailAndPassword(email, password)
            .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, "signInWithEmail:success");
                        FirebaseUser user = mAuth.getCurrentUser();
                        updateUI(user);
                    } else {
                        // If sign in fails, display a message to the user.
                        Log.w(TAG, "signInWithEmail:failure", task.getException());
                        Toast.makeText(EmailPasswordActivity.this, "Authentication failed.",
                                Toast.LENGTH_SHORT).show();
                        updateUI(null);
                    }
                }
            });
    अगर साइन इन हो जाता है, तो आगे बढ़ने के लिए, वापस मिले FirebaseUser का इस्तेमाल किया जा सकता है.

सुझाया गया: पासवर्ड से जुड़ी नीति सेट करना

पासवर्ड की जटिलता से जुड़ी ज़रूरी शर्तों को लागू करके, खाते की सुरक्षा को बेहतर बनाया जा सकता है.

अपने प्रोजेक्ट के लिए पासवर्ड की नीति कॉन्फ़िगर करने के लिए, Firebase कंसोल के पुष्टि करने की सेटिंग वाले पेज पर मौजूद, पासवर्ड की नीति टैब खोलें:

पुष्टि करने की सेटिंग

Firebase Authentication की पासवर्ड नीतियां, पासवर्ड से जुड़ी इन ज़रूरी शर्तों के साथ काम करती हैं:

  • छोटा अक्षर होना ज़रूरी है

  • कैपिटल लेटर ज़रूरी है

  • संख्या वाला वर्ण डालना ज़रूरी है

  • बिना अक्षर और अंक वाला वर्ण ज़रूरी है

    बिना अक्षर और अंक वाले वर्ण की ज़रूरी शर्तें पूरी करने वाले वर्ण ये हैं: ^ $ * . [ ] { } ( ) ? " ! @ # % & / \ , > < ' : ; | _ ~

  • पासवर्ड की कम से कम लंबाई (6 से 30 वर्णों के बीच; डिफ़ॉल्ट रूप से 6)

  • पासवर्ड की ज़्यादा से ज़्यादा लंबाई (ज़्यादा से ज़्यादा 4,096 वर्ण)

पासवर्ड नीति लागू करने की सुविधा को दो मोड में चालू किया जा सकता है:

  • ज़रूरी है: जब तक उपयोगकर्ता आपकी नीति के मुताबिक पासवर्ड अपडेट नहीं करता, तब तक साइन अप करने की कोशिशें पूरी नहीं होंगी.

  • सूचना दें: उपयोगकर्ताओं को ऐसे पासवर्ड से साइन अप करने की अनुमति है जो ज़रूरी शर्तों का पालन नहीं करता. इस मोड का इस्तेमाल करते समय, आपको यह जांच करनी चाहिए कि उपयोगकर्ता का पासवर्ड, क्लाइंट-साइड पर मौजूद नीति के मुताबिक है या नहीं. अगर पासवर्ड नीति के मुताबिक नहीं है, तो उपयोगकर्ता को किसी तरह से पासवर्ड अपडेट करने के लिए कहें.

नए उपयोगकर्ताओं को हमेशा ऐसा पासवर्ड चुनना होता है जो आपकी नीति के मुताबिक हो.

अगर आपके पास सक्रिय उपयोगकर्ता हैं, तो हमारा सुझाव है कि साइन इन करने पर अपग्रेड करने के लिए मजबूर करने की सुविधा चालू न करें. ऐसा तब तक न करें, जब तक आपको उन उपयोगकर्ताओं का ऐक्सेस ब्लॉक न करना हो जिनके पासवर्ड आपकी नीति के मुताबिक नहीं हैं. इसके बजाय, सूचना मोड का इस्तेमाल करें. इससे उपयोगकर्ता अपने मौजूदा पासवर्ड से साइन इन कर पाएंगे. साथ ही, उन्हें यह भी पता चल पाएगा कि उनके पासवर्ड में कौनसी ज़रूरी शर्तें पूरी नहीं की गई हैं.

सुझाया गया: ईमेल पते की गिनती से जुड़ी सुरक्षा की सुविधा चालू करें

Firebase Authentication के कुछ ऐसे तरीके हैं जिनमें ईमेल पतों को पैरामीटर के तौर पर इस्तेमाल किया जाता है. अगर ईमेल पता रजिस्टर नहीं किया गया है, जबकि उसे रजिस्टर किया जाना चाहिए (उदाहरण के लिए, ईमेल पते और पासवर्ड से साइन इन करते समय), तो ये तरीके खास गड़बड़ियां दिखाते हैं. इसी तरह, अगर ईमेल पता रजिस्टर किया गया है, जबकि उसे इस्तेमाल नहीं किया जाना चाहिए (उदाहरण के लिए, किसी उपयोगकर्ता का ईमेल पता बदलते समय), तो ये तरीके खास गड़बड़ियां दिखाते हैं. इससे उपयोगकर्ताओं को समस्या हल करने के तरीके सुझाए जा सकते हैं. हालांकि, इसका गलत इस्तेमाल भी किया जा सकता है. जैसे, बैड ऐक्टर आपके उपयोगकर्ताओं के रजिस्टर किए गए ईमेल पतों का पता लगा सकते हैं.

इस जोखिम को कम करने के लिए, हमारा सुझाव है कि Google Cloud gcloud टूल का इस्तेमाल करके, अपने प्रोजेक्ट के लिए ईमेल पता ढूंढने से रोकने की सुविधा चालू करें. ध्यान दें कि इस सुविधा को चालू करने से, Firebase Authentication की गड़बड़ी की रिपोर्टिंग के तरीके में बदलाव होता है: पक्का करें कि आपका ऐप्लिकेशन, ज़्यादा खास गड़बड़ियों पर निर्भर न हो.

अगले चरण

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

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

  • अपनी Firebase Realtime Database और Cloud Storage सुरक्षा से जुड़े नियमों में, auth वैरिएबल से साइन इन किए हुए उपयोगकर्ता का यूनीक User-ID पाया जा सकता है. साथ ही, इसका इस्तेमाल यह कंट्रोल करने के लिए किया जा सकता है कि कोई उपयोगकर्ता किस डेटा को ऐक्सेस कर सकता है.

उपयोगकर्ताओं को पुष्टि करने वाले कई प्रोवाइडर का इस्तेमाल करके, आपके ऐप्लिकेशन में साइन इन करने की अनुमति दी जा सकती है. इसके लिए, पुष्टि करने वाले प्रोवाइडर के क्रेडेंशियल को किसी मौजूदा उपयोगकर्ता खाते से लिंक करें.

किसी उपयोगकर्ता को साइन आउट करने के लिए, signOut को कॉल करें:

Kotlin

Firebase.auth.signOut()

Java

FirebaseAuth.getInstance().signOut();