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

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

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

  1. अगर आपने पहले से ऐसा नहीं किया है, तो अपने 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:33.7.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:23.1.0")
    }
    क्या आपको Kotlin के लिए कोई लाइब्रेरी मॉड्यूल चाहिए? अक्टूबर 2023 (Firebase BoM 32.5.0) से, Kotlin और Java, दोनों डेवलपर मुख्य लाइब्रेरी मॉड्यूल का इस्तेमाल कर सकते हैं. ज़्यादा जानकारी के लिए, इस पहल के बारे में अक्सर पूछे जाने वाले सवाल देखें.
  3. अगर आपने अब तक अपने ऐप्लिकेशन को Firebase प्रोजेक्ट से कनेक्ट नहीं किया है, तो Firebase कंसोल से ऐसा करें.
  4. बिना पहचान ज़ाहिर किए पुष्टि करने की सुविधा चालू करें:
    1. Firebase कंसोल में, Auth सेक्शन खोलें.
    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. साइन इन करने वाले उपयोगकर्ता के linkWithCredential तरीके के लिए, AuthCredential ऑब्जेक्ट को पास करें:

    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 पर अपग्रेड कर लिया है, तो क्लाउड लॉगिंग में is_anon के हिसाब से फ़िल्टर किया जा सकता है.

अगले चरण

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