Kullanıcının kimlik bilgilerini depolama

Kullanıcılar başarılı bir şekilde oturum açtıktan, hesap oluşturduktan veya şifreleri değiştirdikten sonra, uygulamanızda kimlik doğrulama işlemini otomatikleştirmek için kimlik bilgilerini saklayabilir.

Başlamadan önce

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

Kimlik bilgilerini depola

Kullanıcının oturum açma bilgilerini içeren bir Credential nesnesi oluşturun. Örneğin, kullanıcıların başarılı bir şekilde şifreleriyle oturum açtıktan sonra kimlik bilgilerini depolamaları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();

Ö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() uygulamasını çağırın. CredentialsClient.save() için yapılan çağrı hemen başarılı olmazsa kimlik bilgileri yeni olabilir. Bu durumda, kullanıcının kayıt isteğini onaylaması gerekir. Kullanıcıdan onay istemek için ResolvableApiException kodunu startResolutionForResult() ile çözümleyin.

Kullanıcı kimlik bilgilerini kaydetmemeyi seçerse kullanıcıdan uygulamaya ait hesap kimlik bilgilerini kaydetmesi tekrar istenmez. Kullanıcı devre dışı bıraktıktan sonra CredentialsClient.save() kodunu çağırırsanız sonuçta CANCELED durum kodu görünür. Kullanıcı, daha sonra Şifreler için Smart Lock bölümündeki Google Ayarları uygulamasından bu özelliği etkinleştirebilir. Bir sonraki sefer kimlik bilgilerinin kaydedilebilmesi için kullanıcıdan, tüm hesaplarda kimlik bilgisi kaydetme özelliğini etkinleştirmesi gerekir.

mCredentialsClient.save(credential).addOnCompleteListener(
        new OnCompleteListener() {
            @Override
            public void onComplete(@NonNull Task 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();
                }
            }
        });
@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() numaralı telefonu arayarak bu bilgileri alabilirsiniz.

Android O ve sonraki sürümleri hedefleme

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