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