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

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

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

Google API (एपीआई) कंसोल प्रोजेक्ट को कॉन्फ़िगर करें और अपना Android Studio प्रोजेक्ट सेट अप करें.

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

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

    // 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, null के बजाय GoogleSignInAccount ऑब्जेक्ट दिखाता है, तो उपयोगकर्ता ने पहले से ही 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. उपयोगकर्ता के साइन इन करने के बाद, गतिविधि के onActivityResult तरीके में उपयोगकर्ता के लिए GoogleSignInAccount ऑब्जेक्ट पाएं.

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