Android
Users
Регистрация и подтверждение email на Android с Back4App
19 мин
как реализовать регистрацию пользователя с подтверждением электронной почты введение в этом руководстве вы узнаете, как настроить процесс подтверждения электронной почты для функции регистрации пользователя (регистрация) вы создадите приложение, которое включает регистрацию пользователя с подтверждением электронной почты с использованием основных функций parse server через back4app этот учебник использует базовое приложение, созданное в android studio 4 1 1 с buildtoolsversion=30 0 3 buildtoolsversion=30 0 3 , compile sdk version = 30 compile sdk version = 30 и targetsdkversion 30 targetsdkversion 30 в любое время вы можете получить доступ к полному проекту через наши репозитории на github репозиторий примера на kotlin репозиторий примера на java цель настройка процесса проверки электронной почты пользователя на back4app для функции регистрации пользователя предварительные требования чтобы завершить этот учебник, вам нужно android studio android приложение созданное и подключенное к back4app устройство (или виртуальное устройство ) с android 4 1 (jelly bean) или новее 1 импорт библиотеки на этом этапе мы импортируем библиотеки, которые будем использовать в нашем проекте добавьте следующие классы parse в наши активности 2\ вам нужно добавить java 1 8 java 1 8 в наш проект через build gradle(module\ app) build gradle(module\ app) потому что вы будете часто использовать лямбда функции в этом проекте 1 compileoptions { 2 sourcecompatibility javaversion version 1 8 3 targetcompatibility javaversion version 1 8 4 } 2 включить проверку электронной почты теперь давайте включим проверку электронной почты на панели управления back4app страница проверки электронной почты имеет два свойства проверить электронные адреса пользователей и запретить вход, если электронный адрес не подтвержден если вы включите только опцию проверить электронные адреса пользователей, пользователь получит электронное письмо для подтверждения, но сможет войти и использовать приложение нормально если вы также включите опцию "запретить вход, если электронный адрес не подтвержден", пользователь сможет войти только после завершения процесса проверки электронной почты 1\ перейдите в ваше приложение на сайт back4app и нажмите на настройки сервера настройки сервера 2\ найдите карточку “письма для подтверждения” и нажмите на настройки настройки 3\ нажмите на подтвердить электронную почту пользователя подтвердить электронную почту пользователя и запретить вход, если электронная почта не подтверждена запретить вход, если электронная почта не подтверждена 4\ по желанию заполните пустые поля и измените уже заполненные в соответствии с вашими предпочтениями 5\ нажмите на кнопку сохранить сохранить 3 регистрация два основных атрибута класса parseuser parseuser это имя пользователя и пароль есть третий специальный атрибут, который вы также должны установить, т е электронная почта чтобы реализовать регистрацию с подтверждением электронной почты, вы будете использовать тот же метод, который вы использовали для реализации регистрации пользователя но на этот раз, вместо того чтобы перенаправить пользователя на экран входа, вы попросите пользователя подтвердить свою электронную почту для входа после завершения процесса регистрации пользователь будет сохранен в базе данных данные пользователя будут доступны на parse dashboard parse dashboard с атрибутом mailverified, установленным в false процесс подтверждения электронной почты состоит в проверке электронной почты пользователя и установке этого атрибута в true, чтобы пользователь мог полностью получить доступ ко всем ресурсам вашего приложения ваш экран регистрации будет выглядеть так создайте signupactivity signupactivity работу, следуя этим шагам 1\ импортируйте в ваш signupactivity signupactivity , в дополнение к зависимостям, импортированным в шаг 1 2\ реализуйте регистрацию пользователя, используя следующий код 1 private void signup(string username, string password, string email) { 2 progressdialog show(); 3 parseuser user = new parseuser(); 4 user setusername(username); 5 user setpassword(password); 6 user setemail(email); 7 user signupinbackground(e > { 8 progressdialog dismiss(); 9 if (e == null) { 10 parseuser logout(); 11 showalert("account created successfully!", "please verify your email before login", false); 12 } else { 13 parseuser logout(); 14 showalert("error account creation failed", "account could not be created" + " " + e getmessage(), true); 15 } 16 }); 17 }1 private fun signup(username string, password string, email string) { 2 progressdialog? show() 3 val user = parseuser() 4 user username = username 5 user setpassword(password) 6 user email = email 7 user signupinbackground(signupcallback { 8 progressdialog? dismiss() 9 if (it == null) { 10 parseuser logout(); 11 showalert("account created successfully!","please verify your email before login", false) 12 } else { 13 parseuser logout(); 14 showalert("error account creation failed","account could not be created" + " " + it message,true) 15 } 16 }) 17 } в примере проекта этот код доступен внутри кнопки регистрации кнопки регистрации обратного вызова также имя пользователя, пароль и адрес электронной почты получаются с помощью полей ввода вы можете добавить свой собственный код для проверки, является ли адрес электронной почты действительным, перед тем как установить его на фронтенде наконец, вы можете добавить свой собственный код для предоставления обратной связи после завершения регистрации мы увидим следующее сообщение… 3\ интересно добавить дополнительный метод для отображения диалогов предупреждений и сделать процесс более профессиональным вот как вы можете это сделать 1 private void showalert(string title, string message, boolean error) { 2 alertdialog builder builder = new alertdialog builder(signupactivity this) 3 settitle(title) 4 setmessage(message) 5 setpositivebutton("ok", (dialog, which) > { 6 dialog cancel(); 7 // don't forget to change the line below with the names of your activities 8 if (!error) { 9 intent intent = new intent(signupactivity this, loginactivity class); 10 intent addflags(intent flag activity clear task | intent flag activity new task); 11 startactivity(intent); 12 } 13 }); 14 alertdialog ok = builder create(); 15 ok show(); 16 }1 private fun showalert(title string, message string, error boolean) { 2 val builder = alertdialog builder(this) 3 settitle(title) 4 setmessage(message) 5 setpositivebutton("ok") { dialog, which > 6 dialog cancel() 7 // don't forget to change the line below with the names of your activities 8 if (!error) { 9 val intent = intent(this\@signupactivity, loginactivity class java) 10 intent addflags(intent flag activity clear task or intent flag activity new task) 11 startactivity(intent) 12 } 13 } 14 val ok = builder create() 15 ok show() 16 } после регистрации мы получим электронное письмо, похожее на это после проверки электронной почты свойство будет установлено в true после проверки электронной почты свойство будет установлено в true 4 войти чтобы реализовать вход с проверкой электронной почты, вы будете использовать тот же метод, который вы использовали для реализации базовой регистрации пользователя но на этот раз parse проверит emailverified булевый параметр перед тем, как предоставить дальнейший доступ пользователю примечание пользователь фактически входит в систему, когда вызывается функция parseuser logininbackground() но он не может полностью получить доступ к приложению, пока проверка электронной почты не будет завершена, из за объекта сессии, который создается в базе данных поэтому важно использовать parseuser logout() каждый раз, когда пользователь, не подтвердивший свою электронную почту, пытается получить доступ к приложению безуспешно, чтобы не оставлять сессии сессии открытыми если вы включили опцию «запретить вход, если электронная почта не подтверждена» на шаге 2, вы получите следующую ошибку, если попытаетесь войти без подтверждения своей электронной почты чтобы сделать loginactivity loginactivity работающим, выполните следующие шаги 1\ импортируйте в ваш loginactivity loginactivity , в дополнение к зависимостям, импортированным в шаг 1 2\ для реализации функции входа пользователя просто используйте следующий код 1 private void login(string username, string password) { 2 progressdialog show(); 3 parseuser logininbackground(username, password, (parseuser, e) > { 4 progressdialog dismiss(); 5 if (parseuser != null) { 6 showalert("login successful", "welcome, " + username + "!", false); 7 } else { 8 parseuser logout(); 9 showalert("login fail", e getmessage() + " please try again", true); 10 } 11 }); 12 }1 private fun login(username string, password string) { 2 progressdialog? show() 3 parseuser logininbackground(username,password) { parseuser parseuser?, e parseexception? > 4 progressdialog? dismiss() 5 if (parseuser != null) { 6 showalert("login successful", "welcome, $username!", false) 7 } else { 8 parseuser logout() 9 showalert("login fail", e? message + " please try again", true) 10 } 11 } 12 } в примере проекта этот код размещен в доступном кнопке входа кнопке входа также имя пользователя и пароль захватываются с помощью edit texts метод alertdisplayer alertdisplayer такой же, как вы добавили в signupactivity signupactivity , не забудьте изменить его intent intent аргументы 5 выйти чтобы реализовать выход пользователя, просто используйте код ниже, в logoutactivity logoutactivity 1 progressdialog show(); 2 parseuser logoutinbackground(e > { 3 progressdialog dismiss(); 4 if (e == null) 5 showalert("so, you're going ", "ok bye bye then"); 6 });1 progressdialog!! show() 2 parseuser logoutinbackground { e parseexception? > 3 progressdialog!! dismiss() 4 if (e == null) 5 showalert("so, you're going ", "ok bye bye then") 6 } в примере проекта этот код доступен внутри кнопки выхода кнопки выхода обратного вызова метод alertdisplayer alertdisplayer такой же, как вы добавили в loginactivity loginactivity и signupactivity signupactivity , не забудьте изменить его intent intent аргументы 6 протестируйте ваше приложение запустите ваше приложение, создайте пару пользователей и попробуйте войти после регистрации без 1\ запустите ваше приложение, создайте пару пользователей и попробуйте войти после регистрации без подтверждения электронной почты, чтобы увидеть, отображается ли ошибка 2\ войдите на сайт back4app https //www back4app com/ 3\ найдите ваше приложение и нажмите на панель управления панель управления > ядро ядро > браузер браузер > пользователь пользователь чтобы увидеть созданных вами пользователей! готово! на этом этапе вы можете войти, зарегистрироваться или выйти из вашего приложения, используя подтверждение электронной почты с основными функциями parse server через back4app!