Как реализовать функциональность OTP в приложении Android по электронной почте - PullRequest
0 голосов
/ 31 мая 2018

Я хочу реализовать функциональность OTP в моем приложении для Android.В этом приложении после ввода идентификатора электронной почты оно проверяет, существует ли пользователь или нет.Если идентификатор электронной почты пользователя не существует, пользователь получит одноразовый пароль (OTP).После получения OTP пользователь сможет войти в приложение.Что мне нужно сделать, чтобы добиться этого в моем приложении?

Ответы [ 3 ]

0 голосов
/ 31 мая 2018

Попробуйте этот код:

Добавить класс Java

//This method would confirm the otp
private void confirmOtp() throws JSONException {
    //Creating a LayoutInflater object for the dialog box
    LayoutInflater li = LayoutInflater.from(this);
    //Creating a view to get the dialog box
    View confirmDialog = li.inflate(R.layout.dialog_confirm, null);

    //Initizliaing confirm button fo dialog box and edittext of dialog box
    buttonConfirm = (AppCompatButton) confirmDialog.findViewById(R.id.buttonConfirm);
    editTextConfirmOtp = (EditText) confirmDialog.findViewById(R.id.editTextOtp);

    //Creating an alertdialog builder
    AlertDialog.Builder alert = new AlertDialog.Builder(this);

    //Adding our dialog box to the view of alert dialog
    alert.setView(confirmDialog);

    //Creating an alert dialog
    final AlertDialog alertDialog = alert.create();

    //Displaying the alert dialog
    alertDialog.show();

    //On the click of the confirm button from alert dialog
    buttonConfirm.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //Hiding the alert dialog
            alertDialog.dismiss();

            //Displaying a progressbar
            final ProgressDialog loading = ProgressDialog.show(MainActivity.this, "Authenticating", "Please wait while we check the entered code", false,false);

            //Getting the user entered otp from edittext
            final String otp = editTextConfirmOtp.getText().toString().trim();

            //Creating an string request
            StringRequest stringRequest = new StringRequest(Request.Method.POST, Config.CONFIRM_URL,
                    new Response.Listener<String>() {
                        @Override
                        public void onResponse(String response) {
                            //if the server response is success
                            if(response.equalsIgnoreCase("success")){
                                //dismissing the progressbar
                                loading.dismiss();

                                //Starting a new activity
                                startActivity(new Intent(MainActivity.this, Success.class));
                            }else{
                                //Displaying a toast if the otp entered is wrong
                                Toast.makeText(MainActivity.this,"Wrong OTP Please Try Again",Toast.LENGTH_LONG).show();
                                try {
                                    //Asking user to enter otp again
                                    confirmOtp();
                                } catch (JSONException e) {
                                    e.printStackTrace();
                                }
                            }
                        }
                    },
                    new Response.ErrorListener() {
                        @Override
                        public void onErrorResponse(VolleyError error) {
                            alertDialog.dismiss();
                            Toast.makeText(MainActivity.this, error.getMessage(), Toast.LENGTH_LONG).show();
                        }
                    }){
                @Override
                protected Map<String, String> getParams() throws AuthFailureError {
                    Map<String,String> params = new HashMap<String, String>();
                    //Adding the parameters otp and username
                    params.put(Config.KEY_OTP, otp);
                    params.put(Config.KEY_USERNAME, username);
                    return params;
                }
            };

            //Adding the request to the queue
            requestQueue.add(stringRequest);
        }
    });
}

Добавить еще один класс API

public class Config {
//URLs to register.php and confirm.php file
public static final String REGISTER_URL = "http://simplifiedcoding.16mb.com/AndroidOTP/register.php";
public static final String CONFIRM_URL = "http://simplifiedcoding.16mb.com/AndroidOTP/confirm.php";

//Keys to send username, password, phone and otp
public static final String KEY_USERNAME = "username";
public static final String KEY_PASSWORD = "password";
public static final String KEY_PHONE = "phone";
public static final String KEY_OTP = "otp";

//JSON Tag from response from server
public static final String TAG_RESPONSE= "ErrorMessage";
}
0 голосов
/ 31 мая 2018

Вы можете сделать это шаг за шагом.

  1. Отправить идентификатор электронной почты, введенный пользователем в приложении.
  2. В API, получить его и выполнить логику для случайного генерирования кода OTP(Вы можете использовать функцию, которая легко доступна из Google, для генерации случайного кода).
  3. Добавьте поле, а именно "otp_code" в таблицу пользователя, и обновите или вставьте этот случайно сгенерированный код в базу данных..
  4. Теперь реализуйте логику для отправки электронной почты из API.В письме содержатся все необходимые сообщения и код OTP.
  5. После того, как электронное письмо успешно отправлено, отправьте ответ пользователю с этим OTP и выполните сопоставление кода на стороне Android.
0 голосов
/ 31 мая 2018

Существует множество способов для этого, но мы предлагаем проверку подлинности с помощью firebase, которая предоставит вам полный поток проверки электронной почты с использованием OTP, а также предоставит некоторую другую методику проверки подлинности, если вы хотите, чтобы следующий официальный URL помог вам.
Firebase Auth System

Еще один способ, которым вы можете использовать свой собственный механизм.Настраиваемые механизмы: вставьте в код статическую электронную почту и пароль после ввода электронной почты, отправьте OTP на введенную почту и сохраните OTP в вашей БД с электронной почтой, когда он попытается проверить ее.Кроме того, поддерживайте истечение некоторого времени или что-то в этом роде.

Надеюсь, это поможет вам!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...