Neue Google Log-in API

Google Identity Services (GIS) ist eine neue Reihe von APIs, die Nutzern eine einfache und sichere Anmeldung und Registrierung in einem einfach zu implementierenden Paket für Entwickler ermöglichen. In diesem Dokument wird eine neue Google Log-in API (Teil des GIS) beschrieben, mit der der Anmelde- oder Registrierungsvorgang gestartet werden kann, wenn ein Nutzer auf die Schaltfläche „Über Google anmelden“ tippt. Diese API kann anstelle der vorhandenen Google Log-in APIs für Anmeldevorgänge verwendet werden.

Sie sollten diese API nur verwenden, wenn der Nutzer explizit die Absicht angibt, sich über Google anzumelden. Verwenden Sie diese API beispielsweise, wenn Nutzer in Ihrer App auf die Schaltfläche „Über Google anmelden“ klicken.

Sie sollten diese API nicht verwenden, um Nutzer beim Start der App oder als Reaktion auf einen anderen Trigger wie das Hinzufügen eines Artikels zum Einkaufswagen aufzufordern. Verwenden Sie für diese Anwendungsfälle die Anmeldung und Registrierung über One Tap.

Wenn du den Google Log-in-Vorgang mit der neuen API startest, wird diese UI angezeigt:

Google Log-in

Hinweis

Google API Console-Projekt konfigurieren und Android Studio-Projekt einrichten

Anmeldeanfrage stellen

Wenn Sie einen Google Log-in-Vorgang mit der Identity API starten möchten, erstellen Sie ein GetSignInRequest-Objekt. Rufen Sie dann bei einem SignInClient-Objekt getSignInIntent auf. Dieser Aufruf ist asynchron und stellt bei Erfolg ein PendingIntent zum Starten des Dialogfelds bereit.

    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 einen SignInCredential ab. Das von getSignInCredentialFromIntent zurückgegebene SignInCredential-Objekt enthält Informationen zu einer gültigen Anmeldung. Wenn sich der Nutzer aus irgendeinem Grund nicht anmelden kann, wird der Fehler ApiException ausgelöst.

    @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 Profilbild-URL des Nutzers zurückgegeben. Wenn Sie zusätzliche Informationen benötigen, können Sie Nutzer zu einem vollständigen Ablauf für Profilinformationen leiten.