Neue Google Log-in API

Google Identity Services (GIS) ist ein neuer Satz von APIs, mit denen Nutzer sichere Anmeldung und Registrierung – in einem einfach zu implementierenden Paket für Entwickler. In diesem Dokument wird eine neue Google Log-in API (Teil von GIS) beschrieben, mit der Sie Den Anmelde- oder Anmeldevorgang zu starten, wenn ein Nutzer auf eine „Über Google anmelden“ tippt Schaltfläche. Diese API kann anstelle der vorhandenen Google Log-in APIs für zur Anmeldung.

Sie sollten diese API nur verwenden, wenn der Nutzer ausdrücklich die Anmeldeabsicht zeigt mit Google. Verwenden Sie diese API beispielsweise, wenn Nutzer auf ein „Über Google anmelden“ klicken Schaltfläche in Ihrer App.

Sie sollten diese API nicht verwenden, um Nutzer zum Anmelden beim Start oder in der App aufzufordern auf einen anderen Trigger, z. B. das Hinzufügen eines Artikels zum Einkaufswagen. Für in diesen Anwendungsfällen Anmeldung und Registrierung über One Tap:

Wenn Sie den Google Log-in-Vorgang mit der neuen API starten, wird Folgendes angezeigt: Benutzeroberfläche:

Google Log-in

Hinweis

Konfigurieren Sie ein Google API Console-Projekt und richten Sie Ihr Android Studio-Projekt ein.

Anmeldeanfrage stellen

Um mit der Identity API einen Google Log-in-Vorgang zu starten, erstellen Sie eine GetSignInRequest-Objekt. Bei einem SignInClient-Objektaufruf getSignInIntent. Dieser Aufruf ist asynchron und liefert im Erfolgsfall eine PendingIntent, um das Dialogfeld zu öffnen.

    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);
                    });
    }

Anmeldeergebnisse verarbeiten

Rufen Sie in onActivityResult eine SignInCredential ab. Das SignInCredential Das von getSignInCredentialFromIntent zurückgegebene Objekt enthält Informationen zu gültigen Anmeldedaten. Wenn sich der Nutzer aus irgendeinem Grund nicht anmelden kann, wird eine Meldung ApiException wird geworfen.

    @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
});

Nach einer erfolgreichen Anmeldung werden immer der vollständige Name, die E-Mail-Adresse, und die URL des Profilbilds. Wenn Sie zusätzliche Informationen benötigen, können Sie die Nutzer in einen vollständigen Datenfluss für Profilinformationen einbinden.