Firebase UI(使用电子邮件/密码进行身份验证)

正如我们之前讨论的, 有两种身份验证方法, 即Firebase UI和Firebase SDK。在本部分中, 我们将学习如何使用Firebase UI方法使用电子邮件/密码执行身份验证。
Firebase UI是一个开源库, 使用非常简单。我们可以自定义它, 因为它是开源的。它消除了样板代码(在很多地方几乎没有改动就必须包含的代码部分), 并在用户体验和安全性方面促进了最佳实践。一个非常简单的API提供了简单的删除和身份验证。它可以处理从电子邮件地址和密码到电话号码类型身份提供者(例如Google)的各种不同身份验证技术来源的流程。它基于Firebase Auth库构建。
使用此库的最佳实践是为我们的应用程序最大化登录和注册转换。它为返回用户启用了我们应用程序的所有自动单击签名, 并且还处理帐户恢复, 帐户链接。
让我们开始逐步了解这个完整的过程:
步骤1:
第一步, 我们将应用程序与Firebase控制台连接。要将应用程序与Firebase连接, 请通过以下链接https://www.srcmini.com/adding-firebase-to-app。
第2步:
一旦我们的应用程序连接到Firebase, 我们的下一步就是导入Firebase UI所需的库。

implementation 'com.firebaseui:firebase-ui-auth:4.3.1'apply plugin: 'com.google.gms.google-services'

Firebase UI(使用电子邮件/密码进行身份验证)

文章图片
第三步:
下一步, 我们需要设置或启用身份验证方法。为此, 我们必须在Firebase控制台中启用电子邮件密码身份验证。
Firebase UI(使用电子邮件/密码进行身份验证)

文章图片
Firebase UI(使用电子邮件/密码进行身份验证)

文章图片
Firebase UI(使用电子邮件/密码进行身份验证)

文章图片
Firebase UI(使用电子邮件/密码进行身份验证)

文章图片
步骤4:
下一步, 我们将转到Android Studio, 并创建一个用于登录和注销的活动。
步骤5:
接下来, 我们将修改MainActivity.java文件。我们必须确保我们的应用在调用Firebase身份验证流程之前检查用户是否已从上一个会话登录。为此, 我们必须检查Firebase实例, 看看是否有人登录。
FirebaseAuth auth=FirebaseAuth.getInstance(); if(auth.getCurrentUser()!=null){//Already signed in }else{//Not signed in}

步骤6:
我们要做的下一步实际上是开始使用Firebase UI库进行签名。身份验证流的入口点是Auth UI类。我们可以通过AuthUI.getInstances()检索Auth UI的实例。因此, 我们要做的是, 我们将首先创建登录代码, 如下所示:
//Creating a sign-in function which is called on button sign-in button clickpublic void sign_in(View view) {FirebaseAuth auth = FirebaseAuth.getInstance(); if (auth.getCurrentUser() != null) {Toast.makeText(getApplicationContext(), "User already sign in signout first", Toast.LENGTH_SHORT).show(); }else{//Choosing Authentication providerList< AuthUI.IdpConfig> providers= Arrays.asList(new AuthUI.IdpConfig.EmailBuilder().build()); //Creating and launching sign-in intentstartActivityForResult(AuthUI.getInstance().createSignInIntentBuilder().setAvailableProviders(providers).build(), 12345); }}

步骤7:
我们必须创建onActivityResult(), 因为身份验证UI的流程具有多个响应代码。在此功能中, 我们将检查请求和响应代码。如果它们匹配, 则用户将成功登录。
//Creating onActivityResult and checking response code to make sure we get the right request.protected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data); //Checking for request codeif(requestCode==12345){//Successfully signed-inif(resultCode==RESULT_OK){//Getting the current userFirebaseUser user=FirebaseAuth.getInstance().getCurrentUser(); //Showing toastToast.makeText(getApplicationContext(), "Successfully signed-in", Toast.LENGTH_SHORT).show(); }}else{//Signed-in failed. If response is null the user canceled the sign-in flow using the back button.//respose.getError().getErrorCode() handle the error.Toast.makeText(getApplicationContext(), "Unabled to sign in", Toast.LENGTH_SHORT).show(); }}

步骤8:
在下一步中, 我们将执行注销功能。因为如果用户登录, 那么还需要注销。我们将通过以下方式创建注销功能:
//Creating sign-out function which is called on button sign-out button clickpublic void sign_out(View view) {AuthUI.getInstance().signOut(this).addOnCompleteListener(new OnCompleteListener< Void> () {@Overridepublic void onComplete(@NonNull Task< Void> task) {//User is now signed outToast.makeText(getApplicationContext(), "User is signed out", Toast.LENGTH_SHORT).show(); }}); }

步骤9:
除了登录和注销, 我们还可以删除用户。为此, 我们需要实现delete()函数, 该函数在单击按钮时调用。如下所示:
public void delete_user(View view) {AuthUI.getInstance().delete(this).addOnCompleteListener(new OnCompleteListener< Void> () {@Overridepublic void onComplete(@NonNull Task< Void> task) {if (task.isSuccessful()) {Toast.makeText(getApplicationContext(), "User is deleted successfully", Toast.LENGTH_SHORT).show(); } else {Toast.makeText(getApplicationContext(), "Unsuccessful", Toast.LENGTH_SHORT).show(); }}}); }

步骤10:
此步骤用于添加新的提供程序。以前我们使用过电子邮件提供商, 但我们可以添加更多提供商, 例如Google, 电话号码。这是通过以下方式完成的:
List< AuthUI.IdpConfig> providers= Arrays.asList(new AuthUI.IdpConfig.EmailBuilder().build(), new AuthUI.IdpConfig.PhoneBuilder().build(), new AuthUI.IdpConfig.GoogleBuilder().build());

为此, 我们必须在Firebase控制台中启用电话和Google提供程序。
Firebase UI(使用电子邮件/密码进行身份验证)

文章图片
【Firebase UI(使用电子邮件/密码进行身份验证)】输出:
Firebase UI(使用电子邮件/密码进行身份验证)

文章图片
Firebase UI(使用电子邮件/密码进行身份验证)

文章图片
Firebase UI(使用电子邮件/密码进行身份验证)

文章图片

    推荐阅读