नया 'Google साइन-इन' एपीआई

Google Identity Services (GIS), एपीआई का एक नया सेट है. यह डेवलपर के लिए आसान और आसानी से लागू किए जा सकने वाले पैकेज में, उपयोगकर्ताओं को साइन इन और साइन अप करने की सुविधा देता है. इस दस्तावेज़ में एक नए 'Google साइन इन' API (जीआईएस) के बारे में जानकारी दी गई है. जब कोई उपयोगकर्ता "Google से साइन-इन करें" बटन पर टैप करता है, तो इस सुविधा का इस्तेमाल साइन-इन या साइन-अप फ़्लो को शुरू करने के लिए किया जा सकता है. साइन इन फ़्लो के लिए, मौजूदा 'Google साइन-इन' एपीआई के बजाय इस एपीआई का इस्तेमाल किया जा सकता है.

आपको इस एपीआई का इस्तेमाल सिर्फ़ तब करना चाहिए, जब कोई व्यक्ति साफ़ तौर पर Google से साइन इन करने का इंटेंट दिखाता हो. उदाहरण के लिए, इस एपीआई का इस्तेमाल तब करें, जब वे आपके ऐप्लिकेशन में "Google से साइन करें" बटन पर क्लिक करें.

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

एपीआई के नए वर्शन के साथ 'Google साइन-इन' फ़्लो शुरू करने पर, यह यह यूज़र इंटरफ़ेस (यूआई) दिखाएगा:

Google साइन-इन

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

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

साइन इन करने का अनुरोध करें

Identity API का इस्तेमाल करके 'Google साइन-इन' फ़्लो लॉन्च करने के लिए, GetSignInRequest ऑब्जेक्ट बनाएं. इसके बाद, SignInClient ऑब्जेक्ट कॉल पर getSignInIntent. यह कॉल एक साथ सिंक हो रहा है. सफल होने पर, डायलॉग बॉक्स लॉन्च करने के लिए PendingIntent की सुविधा मिलेगी.

    private static final int REQUEST_CODE_GOOGLE_SIGN_IN = 1; /* unique request id */

    private void signIn() {
        GetSignInIntentRequest request =
            GetSignInIntentRequest.builder()
                .setServerClientId(getString(R.string.server_client_id))
                .build();

        Identity.getSignInClient(activity)
            .getSignInIntent(request)
            .addOnSuccessListener(
                    result -> {
                        try {
                            startIntentSenderForResult(
                                    result.getIntentSender(),
                                    REQUEST_CODE_GOOGLE_SIGN_IN,
                                    /* fillInIntent= */ null,
                                    /* flagsMask= */ 0,
                                    /* flagsValue= */ 0,
                                    /* extraFlags= */ 0,
                                    /* options= */ null);
                        } catch (IntentSender.SendIntentException e) {
                            Log.e(TAG, "Google Sign-in failed");
                        }
                    })
            .addOnFailureListener(
                    e -> {
                        Log.e(TAG, "Google Sign-in failed", e);
                    });
    }

साइन इन से जुड़े नतीजों को मैनेज करना

onActivityResult में, SignInCredential को फिर से पाएं. getSignInCredentialFromIntent से मिले SignInCredential ऑब्जेक्ट में, मान्य लॉगिन की जानकारी होती है. अगर किसी वजह से उपयोगकर्ता लॉग इन नहीं कर पाता है, तो ApiException थ्रो होता है.

    @Override
    public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(resultCode == Activity.RESULT_OK) {
            if (requestCode == REQUEST_CODE_GOOGLE_SIGN_IN) {
                try {
                    SignInCredential credential = Identity.getSignInClient(this).getSignInCredentialFromIntent(data);
                    // Signed in successfully - show authenticated UI
                    updateUI(credential);
                } catch (ApiException e) {
                    // The ApiException status code indicates the detailed failure reason.
                }
            }
        }
    }
private ActivityResultLauncher<IntentSenderRequest> loginResultHandler = registerForActivityResult(new ActivityResultContracts.StartIntentSenderForResult(), result -> {
    // handle intent result here
});

साइन इन हो जाने पर, हमेशा उपयोगकर्ता का पूरा नाम, ईमेल, और प्रोफ़ाइल फ़ोटो का यूआरएल दिखता है. अगर आपको ज़्यादा जानकारी चाहिए, तो उपयोगकर्ताओं को प्रोफ़ाइल की पूरी जानकारी देने के लिए कहें.