एंड्रॉइड पर गुमनाम रूप से फायरबेस के साथ प्रमाणित करें

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

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

  1. यदि आपने पहले से नहीं किया है, तो अपने एंड्रॉइड प्रोजेक्ट में फायरबेस जोड़ें
  2. अपने मॉड्यूल (ऐप-स्तर) ग्रैडल फ़ाइल में (आमतौर पर <project>/<app-module>/build.gradle.kts या <project>/<app-module>/build.gradle ), फायरबेस प्रमाणीकरण के लिए निर्भरता जोड़ें Android के लिए लाइब्रेरी. हम लाइब्रेरी वर्जनिंग को नियंत्रित करने के लिए फायरबेस एंड्रॉइड BoM का उपयोग करने की सलाह देते हैं।
    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:32.7.3"))
    
        // 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")
    }
    

    फायरबेस एंड्रॉइड बीओएम का उपयोग करके, आपका ऐप हमेशा फायरबेस एंड्रॉइड लाइब्रेरी के संगत संस्करणों का उपयोग करेगा।

    (वैकल्पिक) BoM का उपयोग किए बिना फायरबेस लाइब्रेरी निर्भरताएँ जोड़ें

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

    ध्यान दें कि यदि आप अपने ऐप में एकाधिक फायरबेस लाइब्रेरी का उपयोग करते हैं, तो हम लाइब्रेरी संस्करणों को प्रबंधित करने के लिए 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:22.3.1")
    }
    
    कोटलिन-विशिष्ट लाइब्रेरी मॉड्यूल खोज रहे हैं? अक्टूबर 2023 (फायरबेस बीओएम 32.5.0) से शुरू होकर, कोटलिन और जावा डेवलपर्स दोनों मुख्य लाइब्रेरी मॉड्यूल पर निर्भर हो सकते हैं (विवरण के लिए, इस पहल के बारे में अक्सर पूछे जाने वाले प्रश्न देखें)।
  3. यदि आपने अभी तक अपने ऐप को अपने फायरबेस प्रोजेक्ट से कनेक्ट नहीं किया है, तो फायरबेस कंसोल से ऐसा करें।
  4. अनाम प्रमाणीकरण सक्षम करें:
    1. फायरबेस कंसोल में, ऑथ सेक्शन खोलें।
    2. साइन-इन विधियाँ पृष्ठ पर, अनाम साइन-इन विधि सक्षम करें।
    3. वैकल्पिक : यदि आपने अपने प्रोजेक्ट को आइडेंटिटी प्लेटफ़ॉर्म के साथ फायरबेस प्रमाणीकरण में अपग्रेड किया है, तो आप स्वचालित क्लीन-अप सक्षम कर सकते हैं। जब आप इस सेटिंग को सक्षम करते हैं, तो 30 दिनों से अधिक पुराने गुमनाम खाते स्वचालित रूप से हटा दिए जाएंगे। स्वचालित क्लीन-अप सक्षम वाली परियोजनाओं में, अनाम प्रमाणीकरण को अब उपयोग सीमा या बिलिंग कोटा में नहीं गिना जाएगा। स्वचालित सफ़ाई देखें.

गुमनाम रूप से फायरबेस से प्रमाणित करें

जब कोई साइन-आउट उपयोगकर्ता किसी ऐप सुविधा का उपयोग करता है जिसके लिए फायरबेस के साथ प्रमाणीकरण की आवश्यकता होती है, तो निम्न चरणों को पूरा करके उपयोगकर्ता को गुमनाम रूप से साइन इन करें:

  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
        updateUI(currentUser)
    }

    Java

    @Override
    public void onStart() {
        super.onStart();
        // Check if user is signed in (non-null) and update UI accordingly.
        FirebaseUser currentUser = mAuth.getCurrentUser();
        updateUI(currentUser);
    }
  3. अंत में, अज्ञात उपयोगकर्ता के रूप में साइन इन करने के लिए साइन इन signInAnonymously पर कॉल करें:

    Kotlin+KTX

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

    Java

    mAuth.signInAnonymously()
            .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, "signInAnonymously:success");
                        FirebaseUser user = mAuth.getCurrentUser();
                        updateUI(user);
                    } else {
                        // If sign in fails, display a message to the user.
                        Log.w(TAG, "signInAnonymously:failure", task.getException());
                        Toast.makeText(AnonymousAuthActivity.this, "Authentication failed.",
                                Toast.LENGTH_SHORT).show();
                        updateUI(null);
                    }
                }
            });
    यदि साइन-इन सफल होता है तो आप उपयोगकर्ता का खाता डेटा प्राप्त करने के लिए getCurrentUser विधि का उपयोग कर सकते हैं।

किसी अज्ञात खाते को स्थायी खाते में बदलें

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

  1. जब उपयोगकर्ता साइन अप करता है, तो उपयोगकर्ता के प्रमाणीकरण प्रदाता के लिए साइन-इन प्रवाह पूरा करें, लेकिन इसमें FirebaseAuth.signInWith विधियों में से किसी एक को कॉल करना शामिल नहीं है। उदाहरण के लिए, उपयोगकर्ता का Google ID टोकन, Facebook एक्सेस टोकन, या ईमेल पता और पासवर्ड प्राप्त करें।
  2. नए प्रमाणीकरण प्रदाता के लिए एक AuthCredential प्राप्त करें:

    गूगल साइन-इन

    Kotlin+KTX

    val credential = GoogleAuthProvider.getCredential(googleIdToken, null)

    Java

    AuthCredential credential = GoogleAuthProvider.getCredential(googleIdToken, null);
    फेसबुक लॉग इन

    Kotlin+KTX

    val credential = FacebookAuthProvider.getCredential(token.token)

    Java

    AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
    ईमेल-पासवर्ड साइन-इन

    Kotlin+KTX

    val credential = EmailAuthProvider.getCredential(email, password)

    Java

    AuthCredential credential = EmailAuthProvider.getCredential(email, password);
  3. AuthCredential ऑब्जेक्ट को साइन-इन उपयोगकर्ता के linkWithCredential विधि में पास करें:

    Kotlin+KTX

    auth.currentUser!!.linkWithCredential(credential)
        .addOnCompleteListener(this) { task ->
            if (task.isSuccessful) {
                Log.d(TAG, "linkWithCredential:success")
                val user = task.result?.user
                updateUI(user)
            } else {
                Log.w(TAG, "linkWithCredential:failure", task.exception)
                Toast.makeText(
                    baseContext,
                    "Authentication failed.",
                    Toast.LENGTH_SHORT,
                ).show()
                updateUI(null)
            }
        }

    Java

    mAuth.getCurrentUser().linkWithCredential(credential)
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    if (task.isSuccessful()) {
                        Log.d(TAG, "linkWithCredential:success");
                        FirebaseUser user = task.getResult().getUser();
                        updateUI(user);
                    } else {
                        Log.w(TAG, "linkWithCredential:failure", task.getException());
                        Toast.makeText(AnonymousAuthActivity.this, "Authentication failed.",
                                Toast.LENGTH_SHORT).show();
                        updateUI(null);
                    }
                }
            });

यदि linkWithCredential पर कॉल सफल होती है, तो उपयोगकर्ता का नया खाता अनाम खाते के फायरबेस डेटा तक पहुंच सकता है।

स्वचालित सफ़ाई

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

  • स्वचालित सफ़ाई सक्षम करने के बाद बनाए गए किसी भी अनाम खाते को निर्माण के 30 दिनों के बाद किसी भी समय स्वचालित रूप से हटाया जा सकता है।
  • स्वचालित क्लीन-अप सक्षम करने से पहले बनाए गए अज्ञात खाते स्वचालित क्लीन-अप सक्षम करने के 30 दिनों के बाद स्वचालित विलोपन के लिए पात्र होंगे।
  • यदि आप स्वचालित सफ़ाई बंद कर देते हैं, तो हटाए जाने के लिए निर्धारित कोई भी अनाम खाता हटाए जाने के लिए निर्धारित रहेगा। इन खातों को उपयोग सीमा या बिलिंग कोटा में नहीं गिना जाता है।
  • यदि आप किसी अनाम खाते को किसी साइन-इन विधि से लिंक करके "अपग्रेड" करते हैं, तो खाता स्वचालित रूप से हटाया नहीं जाएगा।

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

अगले कदम

अब जब उपयोगकर्ता फ़ायरबेस से प्रमाणित कर सकते हैं, तो आप फ़ायरबेस नियमों का उपयोग करके अपने फ़ायरबेस डेटाबेस में डेटा तक उनकी पहुंच को नियंत्रित कर सकते हैं।