'Google साइन इन' को आपके Android ऐप्लिकेशन में इंटिग्रेट करना

अपने Android ऐप्लिकेशन में Google साइन इन को इंटिग्रेट करने के लिए, Google साइन इन को कॉन्फ़िगर करें और अपने ऐप्लिकेशन के लेआउट में एक बटन जोड़ें, जिससे साइन-इन फ़्लो शुरू हो जाएगा.

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

Google API Console प्रोजेक्ट कॉन्फ़िगर करें और अपना Android Studio प्रोजेक्ट सेट अप करें.

'Google साइन इन' और GoogleSignInClient ऑब्जेक्ट को कॉन्फ़िगर करें

  1. अपनी साइन इन गतिविधि के onCreate तरीके में, 'Google साइन इन' को इस तरह कॉन्फ़िगर करें अपने ऐप्लिकेशन के लिए, उपयोगकर्ता के ज़रूरी डेटा का अनुरोध करें. उदाहरण के लिए, कॉन्फ़िगर करने के लिए उपयोगकर्ताओं की आईडी और प्रोफ़ाइल की बुनियादी जानकारी के लिए, GoogleSignInOptions DEFAULT_SIGN_IN पैरामीटर वाला ऑब्जेक्ट है. उपयोगकर्ताओं से ईमेल पता पतों को भी सेट करते हैं, तो GoogleSignInOptions ऑब्जेक्ट requestEmail विकल्प.

    // Configure sign-in to request the user's ID, email address, and basic
    // profile. ID and basic profile are included in DEFAULT_SIGN_IN.
    GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestEmail()
            .build();

    अगर आपको Google API ऐक्सेस करने के लिए अतिरिक्त दायरों का अनुरोध करना है, तो उनके बारे में बताएं requestScopes के साथ. साइन-इन करते समय बेहतरीन उपयोगकर्ता अनुभव के लिए, सिर्फ़ उन दायरों का अनुरोध करें जो आपके ऐप्लिकेशन के कम से कम काम करने के लिए ज़रूरी है. किसी भी अतिरिक्त दायरे का अनुरोध करें ताकि आपके उपयोगकर्ताओं को सहमति स्क्रीन दिखे उसके काम के बारे में ज़्यादा जानकारी दें. अन्य दायरों के लिए अनुरोध करना देखें.

  2. इसके बाद, अपनी साइन इन गतिविधि के onCreate तरीके में भी, आपके बताए गए विकल्पों के साथ GoogleSignInClient ऑब्जेक्ट.

    // Build a GoogleSignInClient with the options specified by gso.
    mGoogleSignInClient = GoogleSignIn.getClient(this, gso);

साइन-इन किए हुए मौजूदा उपयोगकर्ता की जांच करना

अपनी गतिविधि के onStart तरीके में, देखें कि किसी उपयोगकर्ता ने पहले से साइन इन किया है या नहीं Google के साथ आपका ऐप्लिकेशन शेयर किया जा सकता है.

// Check for existing Google Sign In account, if the user is already signed in
// the GoogleSignInAccount will be non-null.
GoogleSignInAccount account = GoogleSignIn.getLastSignedInAccount(this);
updateUI(account);

अगर GoogleSignIn.getLastSignedInAccount, GoogleSignInAccount ऑब्जेक्ट दिखाता है (null के बजाय), उपयोगकर्ता ने Google से आपके ऐप्लिकेशन में पहले ही साइन इन कर लिया है. अपने यूज़र इंटरफ़ेस (यूआई) को ज़रूरत के मुताबिक अपडेट करें—यानी कि साइन-इन बटन छिपाएं, अपना यूज़र इंटरफ़ेस (यूआई) लॉन्च करें मुख्य गतिविधि या जो भी आपके ऐप्लिकेशन के लिए सही हो.

अगर GoogleSignIn.getLastSignedInAccount, null दिखाता है, तो इसका मतलब है कि उपयोगकर्ता ने अब तक ने Google से आपके ऐप्लिकेशन में साइन इन किया है. 'Google साइन इन' दिखाने के लिए, अपना यूज़र इंटरफ़ेस (यूआई) अपडेट करना बटन.

अपने ऐप्लिकेशन में 'Google साइन इन' बटन जोड़ें

  1. स्टैंडर्ड Google साइन-इन बटन SignInButton जोड़ें ऐप्लिकेशन के लेआउट में:

    <com.google.android.gms.common.SignInButton
     android:id="@+id/sign_in_button"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content" />
    
  2. वैकल्पिक: अगर 'साइन-इन करें' बटन के बजाय डिफ़ॉल्ट रूप से उपलब्ध बटन ग्राफ़िक का इस्तेमाल किया जा रहा हो साइन-इन बटन की ऐसेट उपलब्ध करानी होगी. साथ ही, बटन की ऐसेट को setSize वाला साइज़ तरीका.

    // Set the dimensions of the sign-in button.
    SignInButton signInButton = findViewById(R.id.sign_in_button);
    signInButton.setSize(SignInButton.SIZE_STANDARD);
    
  3. Android पर की गई गतिविधि (उदाहरण के लिए, onCreate तरीके में) में, रजिस्टर करें बटन की OnClickListener सूचना कब दिखेगी, ताकि उपयोगकर्ता को साइन इन करने में मदद मिल सके:

    findViewById(R.id.sign_in_button).setOnClickListener(this);
    

साइन इन करने की प्रोसेस शुरू करें

  1. साइन-इन खाता चुनने के विकल्प की इमेज गतिविधि की onClick विधि में, getSignInIntent की मदद से साइन-इन इंटेंट शामिल किया गया है और startActivityForResult से इंटेंट शुरू किया जा रहा है.

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.sign_in_button:
                signIn();
                break;
            // ...
        }
    }
    
    private void signIn() {
        Intent signInIntent = mGoogleSignInClient.getSignInIntent();
        startActivityForResult(signInIntent, RC_SIGN_IN);
    }

    इंटेंट शुरू करने पर, उपयोगकर्ता को साइन इन करने के लिए Google खाता चुनने का निर्देश मिलता है के साथ. अगर आपने profile, email, और openid से ज़्यादा दायरों का अनुरोध किया था, तो उपयोगकर्ता को, अनुरोध किए गए संसाधनों का ऐक्सेस देने के लिए भी कहा जाएगा.

  2. उपयोगकर्ता के साइन इन करने के बाद, आपको GoogleSignInAccount मिल सकता है गतिविधि के onActivityResult तरीके में उपयोगकर्ता के लिए ऑब्जेक्ट.

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
    
        // Result returned from launching the Intent from GoogleSignInClient.getSignInIntent(...);
        if (requestCode == RC_SIGN_IN) {
            // The Task returned from this call is always completed, no need to attach
            // a listener.
            Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
            handleSignInResult(task);
        }
    }

    GoogleSignInAccount ऑब्जेक्ट में साइन-इन करने वाले व्यक्ति की जानकारी होती है जैसे उपयोगकर्ता का नाम.

    private void handleSignInResult(Task<GoogleSignInAccount> completedTask) {
        try {
            GoogleSignInAccount account = completedTask.getResult(ApiException.class);
    
            // Signed in successfully, show authenticated UI.
            updateUI(account);
        } catch (ApiException e) {
            // The ApiException status code indicates the detailed failure reason.
            // Please refer to the GoogleSignInStatusCodes class reference for more information.
            Log.w(TAG, "signInResult:failed code=" + e.getStatusCode());
            updateUI(null);
        }
    }

    उपयोगकर्ता का ईमेल पता getEmail से भी पाया जा सकता है, getId के साथ, उपयोगकर्ता का Google आईडी (क्लाइंट-साइड इस्तेमाल के लिए), और getIdToken वाले उपयोगकर्ता के लिए एक आईडी टोकन होगा. अगर आपको साइन-इन किए हुए मौजूदा उपयोगकर्ता को बैकएंड सर्वर पर भेजना है, तो अपने बैकएंड सर्वर पर आईडी टोकन भेजना और सर्वर पर टोकन की पुष्टि करें.