اگرچه Credential Manager از ورود به سیستم مبتنی بر رمز عبور پشتیبانی میکند، اکیداً توصیه میکنیم روشهای احراز هویت مدرن و امنتر مانند کلیدهای عبور و ورود با گوگل را در اولویت قرار دهید. این روشها امنیت و تجربه کاربری به مراتب بهتری را ارائه میدهند. با این حال، اگر برنامه شما باید از رمزهای عبور پشتیبانی کند، از این راهنما به عنوان مرجعی برای پیادهسازی رمزهای عبور با Credential Manager استفاده کنید.
مدیر اعتبارنامه (Credential Manager) یک API یکپارچه برای برنامه شما فراهم میکند تا اعتبارنامههای کاربر، از جمله نام کاربری و رمز عبور را ذخیره و بازیابی کند. این امر فرآیند ورود به سیستم را برای کاربران ساده میکند و به آنها امکان میدهد تا به طور یکپارچه از ارائه دهندگان اعتبارنامه استفاده کنند.
پیشنیازها
پیادهسازی رمزهای عبور در Credential Manager روی دستگاههایی که اندروید ۴.۴ (سطح API ۱۹) و بالاتر دارند، کار میکند.
نمای کلی
این راهنما بر تغییرات مورد نیاز در برنامه شما برای ایجاد، ذخیره و ورود با رمز عبور تمرکز دارد.
- افزودن وابستگیها به برنامه : کتابخانههای Credential Manager مورد نیاز را اضافه کنید.
- نمونهسازی مدیر اعتبارنامه : یک نمونه از مدیر اعتبارنامه ایجاد کنید.
- ذخیره رمز عبور کاربر : اطلاعات کاربری کاربر را به صورت ایمن ذخیره کنید.
- ورود با رمز عبور : بازیابی و استفاده از اعتبارنامههای ذخیرهشده برای ورود به سیستم.
- فیلدهایی را که باید از تکمیل خودکار استفاده کنند شناسایی کنید : برای تجربه کاربری بهتر از تکمیل خودکار استفاده کنید.
- افزودن پشتیبانی برای پیوندهای دارایی دیجیتال : پشتیبانی برای اشتراکگذاری رمزهای عبور در برنامهها و وبسایتهای مرتبط اضافه شود.
وابستگیها را به برنامه خود اضافه کنید
وابستگیهای زیر را به فایل build.gradle ماژول برنامه خود اضافه کنید:
کاتلین
dependencies { implementation("androidx.credentials:credentials:1.7.0-alpha02") }
شیار
dependencies { implementation "androidx.credentials:credentials:1.7.0-alpha02" }
مدیر اعتبارنامه را به صورت نمونه معرفی کنید
از زمینه برنامه یا فعالیت خود برای ایجاد یک شیء CredentialManager استفاده کنید.
// Use your app or activity context to instantiate a client instance of
// CredentialManager.
private val credentialManager = CredentialManager.create(context)
ذخیره رمز عبور کاربر
وقتی کاربری با موفقیت در برنامه شما ثبت نام میکند یا رمز عبور خود را بهروزرسانی میکند، این اطلاعات را در مدیریت رمز عبور او ذخیره کنید.
ساخت یک درخواست رمز عبور : شیء
CreatePasswordRequestشامل نام کاربری و رمز عبوری است که باید ذخیره شود. برای شروع فرآیند ذخیره، تابعcredentialManager.createCredential()را فراخوانی کنید.مدیریت پاسخ : پردازش
CreatePasswordResponseو مدیریت هرگونه خطا (برای مثال، اگر کاربر درخواست را لغو کند).
suspend fun registerPassword(username: String, password: String) {
// Initialize a CreatePasswordRequest object.
val createPasswordRequest =
CreatePasswordRequest(id = username, password = password)
// Create credential and handle result.
coroutineScope {
try {
val result =
credentialManager.createCredential(
// Use an activity based context to avoid undefined
// system UI launching behavior.
activityContext,
createPasswordRequest
)
// Handle register password result
} catch (e: CreateCredentialException) {
handleFailure(e)
}
}
}
با رمز عبور وارد شوید
برای بازیابی اعتبارنامههای ذخیرهشده، یک GetCredentialRequest با GetPasswordOption بسازید و getCredential() را فراخوانی کنید. برای فیلتر کردن اینکه کدام رمزهای عبور بر اساس شناسههای کاربری مشخصشده واکشی میشوند، از فیلد اختیاری allowedUserIds استفاده کنید.
val getPasswordOption = GetPasswordOption()
val credentialRequest = GetCredentialRequest.Builder()
.addCredentialOption(getPasswordOption)
.build()
شناسایی فیلدهایی که باید از قابلیت تکمیل خودکار استفاده کنند
ویژگی android:isCredential به ارائهدهندگان اعتبارنامه کمک میکند تا فیلدهای مورد نظر برای تکمیل خودکار را شناسایی کنند و منجر به یک تجربه کاربری روانتر شود. این ویژگی، autofillHints موجود را تکمیل میکند.
مزایای مشخص کردن فیلدهای خاص برای تکمیل خودکار عبارتند از:
- بهبود دقت تکمیل خودکار : به مدیران رمز عبور و سیستم اندروید کمک میکند تا فیلدهای مورد نظر برای اعتبارنامهها را بهتر شناسایی کنند.
- تجربه کاربری بهبود یافته : میتواند منجر به پیشنهادات تکمیل خودکار روانتر و قابل اعتمادتری شود.
همانطور که در مثال زیر نشان داده شده است، ویژگی isCredential را در فیلدهای نام کاربری و رمز عبور وارد کنید:
<EditText
android:id="@+id/username_edittext"
android:autofillHints="username"
android:isCredential="true" />
<EditText
android:id="@+id/password_edittext"
android:inputType="textPassword"
android:autofillHints="password"
android:isCredential="true" />
روش دیگر، اضافه کردن ویژگی به صورت برنامهنویسی شده است، همانطور که در قطعه کد زیر نشان داده شده است:
if (android.os.Build.VERSION.SDK_INT >=
android.os.Build.VERSION_CODES.UPSIDE_DOWN_CAKE) { // Android 14
usernameEditText.isCredential = true
passwordEditText.isCredential = true
}
اضافه شدن پشتیبانی از لینکهای داراییهای دیجیتال
برای اطمینان از سازگاری با مدیران رمز عبور، باید پیوندهای دارایی دیجیتال را بین برنامه و وبسایت خود پیکربندی کنید. این امر امکان اشتراکگذاری ایمن اعتبارنامهها را در هر دو پلتفرم فراهم میکند.