فراموشی/تغییر رمز عبور - Android

در این بخش از مستند می‌خواهیم با رمزعبور کاربران کار کنیم و دو سناریو بسیار رایج را بیاموزیم:

پیش‌نیازها

  1. در صورتی که با سرویس کاربران بکتوری آشنایی ندارید، به معرفی سرویس کاربران مراجعه کنید.
  2. در صورتی که هنوز 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());
        }
    }
});

با صدا زدن این تابع، در صورتی که عملیات موفقیت‌آمیز باشد، ایمیلی به میل ثبت‌شده در بکتوری و متناظر با نام کاربری داده شده ارسال می‌شود. در این ایمیل یک لینک یک‌بار مصرف داده شده است که با کلیک روی آن، کاربر صحت درخواست خود را تأیید می‌کند. پس از این‌که کاربر ثابت کرد که خودش درخواست تغییر رمز عبور را صادر کرده، مجددا از طرف بکتوری ایمیلی به کاربر ارسال می‌شود که در آن پسوورد جدید تعیین شده برای او آمده است. کاربر می‌بایست با پسوورد جدیدش لاگین کند و بعدا در صورتی که تمایل داشت، با تغییر رمز عبور رمز عبور دلخواهش را مجددا تعیین کند.

مهم: دقت کنید که برای برآورده سازی نیاز «فراموشی رمز عبور» حتما باید کاربران به هنگام ثبت‌نام ایمیلی را فراهم کرده باشند.