Uwierzytelniaj w backendzie przy użyciu tokenów identyfikatorów

Gdy użytkownik wybierze konto Google, klient logowania jednym dotknięciem pobierze token identyfikatora Google. Token identyfikatora to podpisane potwierdzenie tożsamości użytkownika, które zawiera też podstawowe informacje o profilu użytkownika, w tym adres e-mail zweryfikowany przez Google.

Gdy tokeny tożsamości są dostępne, możesz ich używać do bezpiecznego uwierzytelniania na backendzie aplikacji lub do automatycznego rejestrowania użytkownika na nowym koncie bez konieczności weryfikowania jego adresu e-mail.

Aby zalogować lub zarejestrować użytkownika za pomocą tokena identyfikatora, wyślij token do backendu aplikacji. Na backendzie zweryfikuj token za pomocą biblioteki klienta interfejsu API Google lub biblioteki JWT do zwykłych obciążeń. Jeśli użytkownik nie zalogował się wcześniej w Twojej aplikacji za pomocą tego konta Google, utwórz nowe konto.

Jeśli opcjonalnie zdecydujesz się użyć liczby jednorazowej, aby uniknąć ataków typu replay, użyj funkcji getNonce, aby wysłać ją wraz z tokenem identyfikatora na serwer backendu, i sprawdź, czy ma ona oczekiwaną wartość. Zdecydowanie zalecamy używanie liczby jednorazowej, aby zwiększyć bezpieczeństwo użytkowników.

Pobieranie tokena identyfikatora z obiektu danych logowania

Po pobraniu danych logowania użytkownika sprawdź, czy obiekt danych logowania zawiera token identyfikatora. Jeśli tak, wyślij go do backendu.

Java

public class YourActivity extends AppCompatActivity {

  // ...
  private static final int REQ_ONE_TAP = 2;  // Can be any integer unique to the Activity.
  private boolean showOneTapUI = true;
  // ...

  @Override
  protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
      super.onActivityResult(requestCode, resultCode, data);

      switch (requestCode) {
          case REQ_ONE_TAP:
              try {
                  SignInCredential credential = oneTapClient.getSignInCredentialFromIntent(data);
                  String idToken = credential.getGoogleIdToken();
                  if (idToken !=  null) {
                      // Got an ID token from Google. Use it to authenticate
                      // with your backend.
                      Log.d(TAG, "Got ID token.");
                  }
              } catch (ApiException e) {
                  // ...
              }
              break;
      }
  }
}

Kotlin

class YourActivity : AppCompatActivity() {

    // ...
    private val REQ_ONE_TAP = 2  // Can be any integer unique to the Activity
    private var showOneTapUI = true
    // ...

    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)

        when (requestCode) {
             REQ_ONE_TAP -> {
                try {
                    val credential = oneTapClient.getSignInCredentialFromIntent(data)
                    val idToken = credential.googleIdToken
                    when {
                        idToken != null -> {
                            // Got an ID token from Google. Use it to authenticate
                            // with your backend.
                            Log.d(TAG, "Got ID token.")
                        }
                        else -> {
                            // Shouldn't happen.
                            Log.d(TAG, "No ID token!")
                        }
                    }
                } catch (e: ApiException) {
                    // ...
            }
        }
    }
    // ...
}