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

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

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

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

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

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:33.1.2"))
    
        // 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:23.0.0")
    }
    
    क्या आपको Kotlin के लिए खास लाइब्रेरी मॉड्यूल की तलाश है? अक्टूबर 2023 (Firebase BoM 32.5.0) से, Kotlin और Java डेवलपर, दोनों के मुख्य लाइब्रेरी मॉड्यूल पर निर्भर हो सकते हैं. ज़्यादा जानकारी के लिए, इस पहल के बारे में अक्सर पूछे जाने वाले सवाल देखें.

पासवर्ड-आधारित खाता बनाएं

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

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

    Kotlin+KTX

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

    Java

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

    Kotlin+KTX

    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+KTX

    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+KTX

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

    Java

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

    Kotlin+KTX

    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+KTX

    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 से पुष्टि करने के कुछ तरीके, जो ईमेल पते को पैरामीटर के तौर पर लेते हैं, उनसे खास गड़बड़ियां होती हैं. ऐसा तब होता है, जब ईमेल पता रजिस्टर होने के समय रजिस्टर न किया गया हो (उदाहरण के लिए, ईमेल पते और पासवर्ड से साइन इन करते समय) या इस्तेमाल न होने की स्थिति में रजिस्टर किया गया हो (उदाहरण के लिए, किसी उपयोगकर्ता का ईमेल पता बदलते समय). यह तरीका उपयोगकर्ताओं को खास राहत देने में मददगार हो सकता है. हालांकि, नुकसान पहुंचाने वाले लोग या ग्रुप इसका गलत इस्तेमाल करके, आपके उपयोगकर्ताओं के रजिस्टर किए गए ईमेल पतों का पता लगा सकते हैं.

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

अगले चरण

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

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

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

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

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

Kotlin+KTX

Firebase.auth.signOut()

Java

FirebaseAuth.getInstance().signOut();