فراموشی/تغییر رمز عبور - Android
در این بخش از مستند میخواهیم با رمزعبور کاربران کار کنیم و دو سناریو بسیار رایج را بیاموزیم:
- تغییر رمزعبور
- فراموشی رمزعبور
پیشنیازها
- در صورتی که با سرویس کاربران بکتوری آشنایی ندارید، به معرفی سرویس کاربران مراجعه کنید.
- در صورتی که هنوز SDK اندروید را راهاندازی نکردهاید، به راهاندازی SDK بکتوری در اندروید مراجعه کنید.
تغییر رمز عبور
تغییر گذرواژه فقط برای کاربران معمولی معنیدار است و برای کاربران مهمان ممکن نیست. جهت تغییر گذرواژه، کاربر شما، باید رمزعبور فعلی خود را بداند و شما موظفاید مقدار آن را از طریق واسط کاربری اندروید (Activity) به همراه رمزعبور جدید دریافت کنید. شما میتوانید با فراخوانی تابع changePasswordInBackground درخواست تغییر گذرواژه را به سرور بکتوری ارسال کنید. در صورت پایان عملیات (موفقیت و یا شکست) تابع callback فراخوانی شده و شما میتوانید پیام مناسب به کاربر خود نشان دهید. برای نمونه در کد زیر ما رمز عبور کاربر فعلی سیستم را تغییر میدهیم:
// Getting old and new password
String oldPassword = "OLD-PASSWORD";
String newPassword = "NEW-PASSWORD";
// Requesting change password to backtory
BacktoryUser.getCurrentUser().changePasswordInBackground(oldPassword, newPassword,
new BacktoryCallBack<Void>() {
// Operation done (success or fail), handling it:
@Override
public void onResponse(BacktoryResponse<Void> response) {
if (response.isSuccessful()) {
// Password changed successfully
Log.d(TAG, "Your password successfully changed");
} else if (response.code() == HttpStatusCode.Forbidden.code()) {
// value "OLD-PASSWORD" is not your real old password
Log.d(TAG, "Old password was incorrect");
} else {
// Operation generally failed, maybe internet connection issue
Log.d("request failed");
}
}
});
در صورتی که عملیات موفق باشد مقدار ()response.isSuccessful برابر true خواهد بود. در غیر این صورت عبارت ()response.code مقدار کد خطا است که در تغییر رمز عبور کد خطا یکی از موارد جدول زیر خواهد بود:
Tables | Description |
---|---|
200-OK | Login was successfull |
403-Forbidden | Your old password was wrong |
500-Internal Server Error | Data access was unsuccessful |
503-Service Unavailable | Your service is disabled |
فراموشی رمزعبور
فرض کنید کاربری که نام کاربری خود را میداند، رمز عبورش را فراموش کرده است. در این صورت میتواند از طریق کد زیر آن را بازیابی کند:
// Requesting forget password to backtory
BacktoryUser.forgotPasswordInBackground("<USERNAME>", new BacktoryCallBack<Void>() {
// Operation done (success or fail), handling it:
@Override
public void onResponse(BacktoryResponse<Void> response) {
if (response.isSuccessful()) {
Log.d("TAG", "Go to your mail inbox and verify your request.");
} else {
Log.d("TAG", "failed; " + response.message());
}
}
});
با صدا زدن این تابع، در صورتی که عملیات موفقیتآمیز باشد، ایمیلی به میل ثبتشده در بکتوری و متناظر با نام کاربری داده شده ارسال میشود. در این ایمیل یک لینک یکبار مصرف داده شده است که با کلیک روی آن، کاربر صحت درخواست خود را تأیید میکند. پس از اینکه کاربر ثابت کرد که خودش درخواست تغییر رمز عبور را صادر کرده، مجددا از طرف بکتوری ایمیلی به کاربر ارسال میشود که در آن پسوورد جدید تعیین شده برای او آمده است. کاربر میبایست با پسوورد جدیدش لاگین کند و بعدا در صورتی که تمایل داشت، با تغییر رمز عبور رمز عبور دلخواهش را مجددا تعیین کند.
مهم: دقت کنید که برای برآورده سازی نیاز «فراموشی رمز عبور» حتما باید کاربران به هنگام ثبتنام ایمیلی را فراهم کرده باشند.