Android पर, Firebase की मदद से पहचान छिपाकर पुष्टि करें

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

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

  1. अगर आपने पहले से ही A/B टेस्टिंग नहीं बनाई है, तो अपने Android प्रोजेक्ट में Firebase जोड़ें.
  2. मॉड्यूल (ऐप्लिकेशन-लेवल) की 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:35.1.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:25.0.0")
    }
  3. अगर आपने अब तक अपने ऐप्लिकेशन को Firebase प्रोजेक्ट से कनेक्ट नहीं किया है, तो Firebase कंसोल पर जाकर ऐसा करें.
  4. पहचान छिपाकर पुष्टि करने की सुविधा चालू करें:
    1. Firebase कंसोल में, सुरक्षा > पुष्टि पर जाएं.
    2. साइन-इन का तरीका टैब में, बिना नाम बताए साइन-इन करने की सुविधा देने वाली कंपनी को चालू करें.
    3. ज़रूरी नहीं: अगर आपने अपने प्रोजेक्ट को Firebase Authentication with Identity Platform पर अपग्रेड किया है, तो अपने-आप क्लीन-अप होने की सुविधा चालू की जा सकती है. इस सेटिंग को चालू करने पर, 30 दिन से ज़्यादा पुराने ऐसे खाते अपने-आप मिट जाएंगे जिनकी पहचान ज़ाहिर नहीं की गई है. जिन प्रोजेक्ट में अपने-आप क्लीन-अप होने की सुविधा चालू है उनमें पहचान छिपाकर पुष्टि करने की सुविधा, अब इस्तेमाल करने की सीमाओं या बिलिंग कोटा में नहीं गिनी जाएगी. अपने-आप स्टोरेज खाली होने की सुविधा देखें.

Firebase की मदद से, बिना नाम बताए पुष्टि करना

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

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

    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 आईडी टोकन, Facebook ऐक्सेस टोकन या ईमेल पता और पासवर्ड पाएं.
  2. पुष्टि करने की सुविधा देने वाली नई कंपनी के लिए, AuthCredential पाएं:

    Google साइन-इन

    Kotlin

    val credential = GoogleAuthProvider.getCredential(googleIdToken, null)

    Java

    AuthCredential credential = GoogleAuthProvider.getCredential(googleIdToken, null);
    Facebook Login

    Kotlin

    val credential = FacebookAuthProvider.getCredential(token.token)

    Java

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

    Kotlin

    val credential = EmailAuthProvider.getCredential(email, password)

    Java

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

    Kotlin

    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 को किया गया कॉल पूरा हो जाता है, तो उपयोगकर्ता का नया खाता, पहचान छिपाने वाले खाते के Firebase डेटा को ऐक्सेस कर सकता है.

अपने-आप स्टोरेज खाली होने की सुविधा

अगर आपने अपने प्रोजेक्ट को Firebase Authentication with Identity Platform पर अपग्रेड किया है, तो Firebase कंसोल में जाकर, अपने-आप क्लीन-अप होने की सुविधा चालू की जा सकती है. इस सुविधा को चालू करने पर, Firebase को 30 दिन से ज़्यादा पुराने अज्ञात खातों को अपने-आप मिटाने की अनुमति मिल जाती है. जिन प्रोजेक्ट में अपने-आप क्लीन-अप होने की सुविधा चालू होती है उनमें पहचान छिपाकर पुष्टि करने की सुविधा, इस्तेमाल करने की सीमाओं या बिलिंग कोटा में नहीं गिनी जाएगी.

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

अगर आपको यह सुविधा चालू करने से पहले यह देखना है कि कितने उपयोगकर्ताओं पर इसका असर पड़ेगा और आपने अपने प्रोजेक्ट को Firebase Authentication with Identity Platform पर अपग्रेड कर लिया है, तो Cloud Logging में is_anon के हिसाब से फ़िल्टर किया जा सकता है.

अगले चरण

अब उपयोगकर्ता, Firebase की मदद से अपनी पहचान की पुष्टि कर सकते हैं. साथ ही, Firebase के नियमों का इस्तेमाल करके, Firebase डेटाबेस में मौजूद डेटा के ऐक्सेस को कंट्रोल किया जा सकता है.