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

Google Identity Services (GIS) एपीआई का एक नया सेट है. इससे उपयोगकर्ता यह डेवलपर के लिए आसानी से लागू किए जा सकने वाले पैकेज में सुरक्षित तरीके से साइन-इन और साइन-अप करता है. इस दस्तावेज़ में एक नए 'Google साइन इन एपीआई' (GIS का हिस्सा) की जानकारी दी गई है. इसका इस्तेमाल इन कामों के लिए किया जा सकता है जब कोई उपयोगकर्ता "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 पाएं. SignInCredential getSignInCredentialFromIntent से लौटाए गए ऑब्जेक्ट में जानकारी है का इस्तेमाल करें. अगर उपयोगकर्ता किसी वजह से लॉग इन नहीं कर पाता है, तो 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
});

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