Nowy interfejs Google Sign-In API

Usługi tożsamości Google (GIS) to nowy zestaw interfejsów API, które zapewniają użytkownikom bezpieczne logowanie i rejestrację w łatwym do wdrożenia pakiecie dla programistów. W tym dokumencie szczegółowo opisujemy nowy interfejs Google Login API (część GIS), którego można używać do rozpoczyna proces logowania lub rejestracji, gdy użytkownik kliknie „Zaloguj się przez Google”. Przycisk Tego interfejsu API można używać zamiast istniejących interfejsów Google Sign-In API w proces logowania.

Tego interfejsu API należy używać tylko wtedy, gdy użytkownik wyraźnie wykazuje zamiar zalogowania się z Google. Używaj tego interfejsu API na przykład, gdy klikną „Zaloguj się przez Google” w aplikacji.

Nie należy używać tego interfejsu API do proszenia użytkownika o zalogowanie się przy uruchamianiu aplikacji ani podczas logowania się w odpowiedzi na inną regułę, np. dodanie produktu do koszyka. Dla: tych przypadków użycia, użyj funkcji Rejestracja i logowanie jednym dotknięciem

Po uruchomieniu logowania przez Google za pomocą nowego interfejsu API wyświetli się ten Interfejs:

Logowanie przez Google

Zanim zaczniesz

Skonfiguruj projekt w Konsoli interfejsów API Google oraz projekt Android Studio.

Poproś o zalogowanie

Aby uruchomić proces logowania przez Google za pomocą interfejsu Identity API, utwórz GetSignInRequest obiekt. Następnie przy wywołaniu obiektu SignInClient getSignInIntent To wywołanie jest asynchroniczne, a jeśli się powiedzie, wyświetli PendingIntent, aby otworzyć okno.

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

Obsługa wyników logowania

W onActivityResult pobierz SignInCredential. SignInCredential obiekt zwrócony z metody getSignInCredentialFromIntent zawiera informacje o poprawnym loginie. Jeśli z jakiegoś powodu użytkownik nie zaloguje się, ApiException trafia na piłkę

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

Wynikiem udanego logowania zawsze jest imię i nazwisko użytkownika, jego adres e-mail i adres URL zdjęcia profilowego. Jeśli potrzebujesz dodatkowych informacji, możesz w kompletny przepływ informacji profilowych.