个性化阅读
专注于IT技术分析

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

正如我们之前讨论的, 有两种身份验证方法, 即Firebase UI和Firebase SDK。在本部分中, 我们将学习如何使用Firebase UI方法使用电子邮件/密码执行身份验证。

Firebase UI是一个开源库, 使用非常简单。我们可以自定义它, 因为它是开源的。它消除了样板代码(在很多地方几乎没有改动就必须包含的代码部分), 并在用户体验和安全性方面促进了最佳实践。一个非常简单的API提供了简单的删除和身份验证。它可以处理从电子邮件地址和密码到电话号码类型身份提供者(例如Google)的各种不同身份验证技术来源的流程。它基于Firebase Auth库构建。

使用此库的最佳实践是为我们的应用程序最大化登录和注册转换。它为返回用户启用了我们应用程序的所有自动单击签名, 并且还处理帐户恢复, 帐户链接。

让我们开始逐步了解这个完整的过程:

步骤1:

第一步, 我们将应用程序与Firebase控制台连接。要将应用程序与Firebase连接, 请通过以下链接https://www.srcmini02.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'
使用电子邮件密码进行FirebaseAuthentication

第三步:

下一步, 我们需要设置或启用身份验证方法。为此, 我们必须在Firebase控制台中启用电子邮件密码身份验证。

使用电子邮件密码进行FirebaseAuthentication
使用电子邮件密码进行FirebaseAuthentication
使用电子邮件密码进行FirebaseAuthentication
使用电子邮件密码进行FirebaseAuthentication

步骤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 click
public 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 provider
        List<AuthUI.IdpConfig> providers= Arrays.asList(new AuthUI.IdpConfig.EmailBuilder().build());

        //Creating and launching sign-in intent
        startActivityForResult(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 code
    if(requestCode==12345){
        //Successfully signed-in
        if(resultCode==RESULT_OK){
            //Getting the current user
            FirebaseUser user=FirebaseAuth.getInstance().getCurrentUser();
            //Showing toast
            Toast.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 click
public void sign_out(View view) {
    AuthUI.getInstance().signOut(this).addOnCompleteListener(new OnCompleteListener<Void>() {
        @Override
        public void onComplete(@NonNull Task<Void> task) {
            //User is now signed out
            Toast.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>() {
        @Override
        public 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提供程序。

使用电子邮件密码进行FirebaseAuthentication

输出:

使用电子邮件密码进行FirebaseAuthentication
使用电子邮件密码进行FirebaseAuthentication
使用电子邮件密码进行FirebaseAuthentication

赞(0)
未经允许不得转载:srcmini » Firebase UI:使用电子邮件/密码进行身份验证

评论 抢沙发

评论前必须登录!