Google is committed to advancing racial equity for Black communities. See how.
इस पेज का अनुवाद Cloud Translation API से किया गया है.
Switch to English

Android पर Google साइन-इन का उपयोग करके प्रमाणीकरण

आप Google साइन-इन को अपने ऐप में एकीकृत करके अपने उपयोगकर्ताओं को अपने Google खातों का उपयोग करके फायरबेस के साथ प्रमाणित कर सकते हैं।

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

  1. यदि आप पहले से नहीं हैं, तो अपने Android प्रोजेक्ट में Firebase जोड़ें
  2. अपने प्रोजेक्ट-लेवल build.gradle फ़ाइल में, अपने buildscript और allprojects दोनों वर्गों में Google के buildscript रिपॉजिटरी को शामिल करना सुनिश्चित करें।
  3. फायरबेस प्रमाणीकरण एंड्रॉइड लाइब्रेरी और Google Play सेवाओं के लिए अपने मॉड्यूल (ऐप-स्तर) ग्रेड फ़ाइल (आमतौर पर app/build.gradle ) के लिए app/build.gradle :

    implementation 'com.google.firebase:firebase-auth:19.3.2'
    implementation 'com.google.android.gms:play-services-auth:18.1.0'
    
  4. यदि आपने अभी तक अपने ऐप के SHA-1 फिंगरप्रिंट को निर्दिष्ट नहीं किया है, तो फायरबेस कंसोल के सेटिंग पेज से ऐसा करें। अपने ऐप के SHA-1 फ़िंगरप्रिंट प्राप्त करने के तरीके के विवरण के लिए अपने ग्राहक को प्रमाणित करने का संदर्भ लें।

  5. Google साइन-इन को Firebase कंसोल में सक्षम करें:
    1. में Firebase कंसोल , प्राधिकरण अनुभाग खोलें।
    2. साइन इन विधि टैब पर, Google साइन-इन विधि सक्षम करें और सहेजें पर क्लिक करें

फायरबेस के साथ प्रमाणीकरण

  1. Google साइन-इन को अपने Android ऐप पृष्ठ पर एकीकृत करके Google साइन-इन को अपने एप्लिकेशन में एकीकृत करें । जब आप कॉन्फ़िगर GoogleSignInOptions वस्तु, फोन requestIdToken :

    जावा

    // Configure Google Sign In
    GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestIdToken(getString(R.string.default_web_client_id))
            .requestEmail()
            .build();

    Kotlin + KTX

    // Configure Google Sign In
    val gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestIdToken(getString(R.string.default_web_client_id))
            .requestEmail()
            .build()
    आपको अपने सर्वर के क्लाइंट आईडी को requestIdToken मेथड में पास करना होगा। OAuth 2.0 क्लाइंट आईडी खोजने के लिए:
    1. जीसीपी कंसोल में क्रेडेंशियल पेज खोलें।
    2. वेब एप्लिकेशन टाइप क्लाइंट आईडी आपके बैकएंड सर्वर का OAuth 2.0 क्लाइंट आईडी है।
    Google साइन-इन को एकीकृत करने के बाद, आपकी साइन-इन गतिविधि का कोड निम्न के समान है:

    जावा

    1f55557c48
    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
    
        // Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...);
        if (requestCode == RC_SIGN_IN) {
            Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
            try {
                // Google Sign In was successful, authenticate with Firebase
                GoogleSignInAccount account = task.getResult(ApiException.class);
                Log.d(TAG, "firebaseAuthWithGoogle:" + account.getId());
                firebaseAuthWithGoogle(account.getIdToken());
            } catch (ApiException e) {
                // Google Sign In failed, update UI appropriately
                Log.w(TAG, "Google sign in failed", e);
                // ...
            }
        }
    }

    Kotlin + KTX

    private fun signIn() {
        val signInIntent = googleSignInClient.signInIntent
        startActivityForResult(signInIntent, RC_SIGN_IN)
    }
    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
    
        // Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...);
        if (requestCode == RC_SIGN_IN) {
            val task = GoogleSignIn.getSignedInAccountFromIntent(data)
            try {
                // Google Sign In was successful, authenticate with Firebase
                val account = task.getResult(ApiException::class.java)!!
                Log.d(TAG, "firebaseAuthWithGoogle:" + account.id)
                firebaseAuthWithGoogle(account.idToken!!)
            } catch (e: ApiException) {
                // Google Sign In failed, update UI appropriately
                Log.w(TAG, "Google sign in failed", e)
                // ...
            }
        }
    }
  2. अपने साइन-इन गतिविधि की onCreate विधि में, FirebaseAuth ऑब्जेक्ट का साझा उदाहरण प्राप्त करें:

    जावा

    private FirebaseAuth mAuth;
    // ...
    // Initialize Firebase Auth
    mAuth = FirebaseAuth.getInstance();

    Kotlin + KTX

    private lateinit var auth: FirebaseAuth
    // ...
    // Initialize Firebase Auth
    auth = Firebase.auth
  3. अपनी गतिविधि को प्रारंभ करते समय, यह देखने के लिए जांचें कि क्या उपयोगकर्ता वर्तमान में साइन इन है:

    जावा

    @Override
    public void onStart() {
        super.onStart();
        // Check if user is signed in (non-null) and update UI accordingly.
        FirebaseUser currentUser = mAuth.getCurrentUser();
        updateUI(currentUser);
    }

    Kotlin + KTX

    override fun onStart() {
        super.onStart()
        // Check if user is signed in (non-null) and update UI accordingly.
        val currentUser = auth.currentUser
        updateUI(currentUser)
    }
  4. उपयोगकर्ता द्वारा सफलतापूर्वक साइन इन करने के बाद, GoogleSignInAccount ऑब्जेक्ट से एक आईडी टोकन प्राप्त करें, इसे फायरबेस क्रेडेंशियल के लिए एक्सचेंज करें, और फायरबेस क्रेडेंशियल का उपयोग करके फायरबेस के साथ प्रमाणित करें:

    जावा

    private void firebaseAuthWithGoogle(String idToken) {
        AuthCredential credential = GoogleAuthProvider.getCredential(idToken, null);
        mAuth.signInWithCredential(credential)
                .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, "signInWithCredential:success");
                            FirebaseUser user = mAuth.getCurrentUser();
                            updateUI(user);
                        } else {
                            // If sign in fails, display a message to the user.
                            Log.w(TAG, "signInWithCredential:failure", task.getException());
                            Snackbar.make(mBinding.mainLayout, "Authentication Failed.", Snackbar.LENGTH_SHORT).show();
                            updateUI(null);
                        }
    
                        // ...
                    }
                });
    }

    Kotlin + KTX

    private fun firebaseAuthWithGoogle(idToken: String) {
        val credential = GoogleAuthProvider.getCredential(idToken, null)
        auth.signInWithCredential(credential)
                .addOnCompleteListener(this) { task ->
                    if (task.isSuccessful) {
                        // Sign in success, update UI with the signed-in user's information
                        Log.d(TAG, "signInWithCredential:success")
                        val user = auth.currentUser
                        updateUI(user)
                    } else {
                        // If sign in fails, display a message to the user.
                        Log.w(TAG, "signInWithCredential:failure", task.exception)
                        // ...
                        Snackbar.make(view, "Authentication Failed.", Snackbar.LENGTH_SHORT).show()
                        updateUI(null)
                    }
    
                    // ...
                }
    }
    यदि signInWithCredential सफल होती है, तो आप उपयोगकर्ता के खाते का डेटा प्राप्त करने के लिए getCurrentUser विधि का उपयोग कर सकते हैं।

अगला कदम

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

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

  • अपने फायरबेस रियलटाइम डेटाबेस और क्लाउड स्टोरेज सिक्योरिटी रूल्स में , आप साइन इन किए गए उपयोगकर्ता की यूनिक यूजर आईडी को auth वैरिएबल से प्राप्त कर सकते हैं, और इसका उपयोग यह नियंत्रित करने के लिए कर सकते हैं कि उपयोगकर्ता किस डेटा तक पहुंच सकता है।

आप उपयोगकर्ताओं को किसी मौजूदा उपयोगकर्ता खाते में कई प्रदाता प्रदाता को प्रमाणित करके अपने ऐप में साइन इन करने की अनुमति दे सकते हैं।

एक उपयोगकर्ता प्रस्थान करने के लिए फोन signOut :

जावा

FirebaseAuth.getInstance().signOut();

Kotlin + KTX

Firebase.auth.signOut()