Android
Users
如何实现Android用户注册与邮件验证
17 分
如何实现带电子邮件验证的用户注册 介绍 在本指南中,您将学习如何为用户注册功能(注册)设置用户电子邮件验证过程。您将创建一个应用程序,其中包括使用 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 一个安卓应用 已创建并连接到 back4app。 一台运行 android 4 1 (jelly bean) 或更高版本的设备(或 虚拟设备 )。 1 导入库 在这一步中,我们将导入我们将在项目中使用的库: 将以下 parse 类添加到我们的活动中。 1 import com parse parse; 2 import com parse parseexception; 3 import com parse parseuser; 2\ 你需要通过 java 1 8 java 1 8 将其添加到我们的项目中, build gradle(module\ app) build gradle(module\ app) 因为你将在这个项目中频繁使用 lambda 函数。 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”类的两个基本属性是用户名和密码。还有一个第三个特殊属性也应该设置,即电子邮件。 要实现带有电子邮件验证的注册,您将使用与实现用户注册相同的方法。但这次,您将要求用户验证他们的电子邮件以登录,而不是将用户重定向到已登录的屏幕。 完成注册过程后,用户将被保存在数据库中。用户数据将在 parse dashboard parse dashboard 中可用,mailverified布尔属性设置为false。验证电子邮件的过程包括验证用户的电子邮件并将此属性设置为true,以便用户可以完全访问您应用程序的所有资源。 您的注册屏幕将如下所示 创建一个 signupactivity signupactivity ,按照以下步骤进行: 1\ 导入到您的 signupactivity signupactivity , 除了在 步骤 1 1 import com parse parseexception ; 2 import com parse signupcallback ; 2\ implement the user registration using the following code 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 } in the example project, this code is available inside a sign up sign up button callback also, username, password and email are caught using edit texts you may add your own code to verify if the email address is valid before setting it in the front end finally, you may add your own code to provide feedback 完成注册后,我们将看到以下消息… 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 步 1 import com parse logincallback ; 2 import com parse parseexception ; 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 } 在示例项目中,这段代码放置在一个 登录 登录 按钮的回调中。 此外,用户名和密码是通过编辑文本框获取的。 该方法 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\ 找到您的应用并点击 仪表板 仪表板 > 核心 核心 > 浏览器 浏览器 > 用户 用户 以查看您创建的用户! 完成! 在这个阶段,您可以使用电子邮件验证通过 back4app 的 parse server 核心功能登录、注册或注销您的应用!