Menyimpan kredensial pengguna

Setelah pengguna berhasil login, membuat akun, atau mengubah sandi, izinkan mereka untuk menyimpan kredensial mereka agar dapat mengotomatiskan autentikasi di masa mendatang di aplikasi Anda.

Sebelum memulai

Mengonfigurasi project Android Studio.

Simpan kredensial

Buat objek Credential yang berisi informasi login pengguna. Sebagai untuk memungkinkan pengguna menyimpan kredensial mereka setelah berhasil login dengan {i>password<i} mereka:

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

Atau, misalnya, setelah pengguna berhasil login dengan Akun Google-nya:

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

Dialog Simpan Smart Lock

Selanjutnya, panggil CredentialsClient.save() untuk menyimpan memiliki kredensial yang lengkap. Jika panggilan ke CredentialsClient.save() tidak langsung dilakukan berhasil, kredensial mungkin baru, di mana pengguna harus mengonfirmasi terhadap permintaan simpan. Selesaikan ResolvableApiException dengan startResolutionForResult() untuk meminta konfirmasi pengguna.

Jika pengguna memilih untuk tidak menyimpan kredensial, pengguna tidak akan diminta lagi untuk menyimpan kredensial akun apa pun untuk aplikasi. Jika Anda memanggil CredentialsClient.save() setelah pengguna memilih tidak ikut, hasilnya akan memiliki kode status CANCELED. Nantinya, pengguna dapat memilih untuk ikut serta dari Aplikasi Setelan, di bagian Smart Lock untuk Sandi. Pengguna harus mengaktifkan penyimpanan kredensial untuk semua akun agar diminta untuk menyimpan kredensial pada lain waktu.

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");
            }
        }

        // ...

    }

Setelah menyimpan kredensial, ambil kredensial dengan memanggil CredentialsClient.request()

Menargetkan Android O dan yang lebih baru

Saat Anda menyimpan kredensial sandi menggunakan Smart Lock di perangkat yang menjalankan Android O atau yang lebih baru, Smart Lock menggunakan dialog konfirmasi isi otomatis native daripada jika memungkinkan. (Perhatikan bahwa kredensial yang disimpan menggunakan Isi Otomatis dengan Google dibagikan secara dua arah dengan Smart Lock untuk Sandi.)