Kullanıcının kimlik bilgilerini depolama

Kullanıcılar başarıyla oturum açtıktan, hesap oluşturduktan veya şifre değiştirdikten sonra gelecekte kimlik doğrulama sürecini otomatikleştirmek için uygulamanızda kullanmalarını sağlayabilirsiniz.

Başlamadan önce

Bir Android Studio projesi yapılandırın.

Kimlik bilgilerini depola

Kullanıcının oturum açma bilgilerini içeren bir Credential nesnesi oluşturun. Örneğin, Örneğin, şifreleri:

Credential credential = new Credential.Builder(email)
        .setPassword(password)  // Important: only store passwords in this field.
                                // Android autofill uses this value to complete
                                // sign-in forms, so repurposing this field will
                                // likely cause errors.
        .build();

Veya örneğin, kullanıcılar Google hesabıyla oturum açtığında:

GoogleSignInAccount gsa = signInTask.getResult();
Credential credential = new Credential.Builder(gsa.getEmail())
        .setAccountType(IdentityProviders.GOOGLE)
        .setName(gsa.getDisplayName())
        .setProfilePictureUri(gsa.getPhotoUrl())
        .build();

Smart Lock Kaydet iletişim kutusu

Ardından, kullanıcıların bilgilerini kaydetmek için CredentialsClient.save() adlı işletmeyi arayın kimlik bilgileri. CredentialsClient.save() adlı kişiye yapılan çağrı hemen yapılmazsa kimlik bilgileri yeni de olabilir. Bu durumda, kullanıcının kaydetme isteğidir. ResolvableApiException sorusunu şu şekilde çözün: Kullanıcıdan onay istemesi için startResolutionForResult().

Kullanıcı, kimlik bilgilerini kaydetmemeyi seçerse kullanıcıdan tekrar uygulama için herhangi bir hesabın kimlik bilgilerini kaydetmelidir. Arama yaptığınızda CredentialsClient.save() devre dışı bıraktıktan sonra, kullanıcının sonucu şu şekilde olur: CANCELED durum kodu. Kullanıcı daha sonra Google'dan Şifreler için Smart Lock bölümündeki Ayarlar uygulaması. Kullanıcı şunu etkinleştirmelidir: bir dahaki sefere kimlik bilgilerinin kaydedilip kaydedilmeyeceğinin sorulması için tüm hesaplar için kimlik bilgisi kaydetme.

mCredentialsClient.save(credential).addOnCompleteListener(
        new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                if (task.isSuccessful()) {
                    Log.d(TAG, "SAVE: OK");
                    Toast.makeText(activity, "Credentials saved", Toast.LENGTH_SHORT).show();
                    return;
                }

                Exception e = task.getException();
                if (e instanceof ResolvableApiException) {
                    // Try to resolve the save request. This will prompt the user if
                    // the credential is new.
                    ResolvableApiException rae = (ResolvableApiException) e;
                    try {
                        rae.startResolutionForResult(this, RC_SAVE);
                    } catch (IntentSender.SendIntentException exception) {
                        // Could not resolve the request
                        Log.e(TAG, "Failed to send resolution.", exception);
                        Toast.makeText(activity, "Save failed", Toast.LENGTH_SHORT).show();
                    }
                } else {
                    // Request has no resolution
                    Toast.makeText(activity, "Save failed", Toast.LENGTH_SHORT).show();
                }
            }
        });</pre>

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

        // ...

        if (requestCode == RC_SAVE) {
            if (resultCode == RESULT_OK) {
                Log.d(TAG, "SAVE: OK");
                Toast.makeText(this, "Credentials saved", Toast.LENGTH_SHORT).show();
            } else {
                Log.e(TAG, "SAVE: Canceled by user");
            }
        }

        // ...

    }

Kimlik bilgilerini depoladıktan sonra CredentialsClient.request().

Android O ve sonraki sürümleri hedefleniyor

Android O çalıştıran cihazlarda Smart Lock'u kullanarak şifre kimlik bilgilerini kaydettiğinizde veya daha yeni bir sürümün yüklü olduğu durumlarda Smart Lock, kendi yerine yerel otomatik doldurma onay iletişim kutusunu kullanır iletişim kutusunu kullanın. (Kimlik bilgilerinin şununla Otomatik Doldurma kullanılarak kaydedildiğini unutmayın: Şifreler için Smart Lock ile Google çift yönlü paylaşılır.)