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

Gdy użytkownik wybierze konto Google, klient logowania jednym dotknięciem pobiera token identyfikatora Google. Token identyfikacyjny to podpisane potwierdzenie tożsamości użytkownika, które zawiera również 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 się w systemie backend aplikacji lub do automatycznej rejestracji nowego konta użytkownika bez konieczności weryfikacji jego adresu e-mail.

Aby zalogować lub zarejestrować użytkownika za pomocą tokena identyfikacyjnego, wyślij token do zaplecza aplikacji. Na zapleczu zweryfikuj token, używając biblioteki klienta interfejsu Google API lub uniwersalnej biblioteki JWT. Jeśli użytkownik nie logował się wcześniej w aplikacji za pomocą tego konta Google, utwórz nowe konto.

Jeśli z opcjonalnego użycia losowego numeru unikalnego (nonce) korzystasz, aby uniknąć ataków polegających na powtórzeniu, użyj metody getNonce, aby wysłać go wraz z identyfikatorem ID na serwer zaplecza, i sprawdź oczekiwaną wartość. Zdecydowanie zalecamy używanie identyfikatora jednorazowego w celu zwiększenia bezpieczeństwa użytkowników.

Pobieranie tokena identyfikacyjnego z obiektu danych logowania

Po pobraniu danych logowania użytkownika sprawdź, czy obiekt danych logowania zawiera token ID. Jeśli tak, prześlij go na backend.

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) {
                    // ...
            }
        }
    }
    // ...
}