Kullanıcının kimlik bilgilerini depolama

Kullanıcılar başarıyla oturum açtıktan, hesap oluşturduktan veya şifrelerini değiştirdikten sonra, uygulamanızda ileri tarihli kimlik doğrulama işlemlerini otomatikleştirmek için kimlik bilgilerini depolamalarına izin verin.

Başlamadan önce

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

Depo kimlik bilgileri

Kullanıcının oturum açma bilgilerini içeren bir Credential nesnesi oluşturun. Örneğin, kullanıcıların şifreleriyle başarılı bir şekilde oturum açtıktan sonra kimlik bilgilerini saklamasına izin vermek için:

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

Alternatif olarak, örneğin kullanıcılar Google hesaplarıyla başarıyla oturum açtıktan sonra:

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

Smart Lock Kaydetme iletişim kutusu

Ardından, kullanıcıların kimlik bilgilerini kaydetmek için CredentialsClient.save() çağrısı yapın. CredentialsClient.save() çağrısı hemen başarılı olmazsa kimlik bilgileri yeni olabilir. Bu durumda, kullanıcının kaydetme isteğini onaylaması gerekir. Kullanıcıdan onay istemek için ResolvableApiException özelliğini startResolutionForResult() ile çözün.

Kullanıcı kimlik bilgilerini kaydetmemeyi tercih ederse kullanıcıdan uygulama için herhangi bir hesabın kimlik bilgilerini kaydetmesi istenmez. Bir kullanıcı kapsam dışında kalmayı seçtikten sonra CredentialsClient.save() yöntemini çağırırsanız sonuçta durum kodu CANCELED olur. Kullanıcı daha sonra Google Ayarları uygulamasının, Şifreler için Smart Lock bölümünden özelliği etkinleştirebilir. Bir sonraki sefer kimlik bilgilerini kaydetmesinin istenmesi için kullanıcının tüm hesaplarda kimlik bilgileri kaydetmeyi etkinleştirmesi gerekir.

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() çağrısı yaparak bunları alın.

Android O ve sonraki sürümleri hedefleniyor

Android O veya daha yeni sürümleri çalıştıran cihazlarda şifre kimlik bilgilerini Smart Lock ile kaydettiğinizde Smart Lock, mümkün olduğunda kendi iletişim kutusu üzerinde yerel otomatik doldurma onay iletişim kutusunu kullanır. (Google ile Otomatik Doldurma özelliği kullanılarak kaydedilen kimlik bilgilerinin Şifreler için Smart Lock ile iki yönlü olarak paylaşıldığını unutmayın.)