你是不是也在想——“鸿蒙这么火,我能不能学会?”
答案是:当然可以!
这个专栏专为零基础小白设计,不需要编程基础,也不需要懂原理、背术语。我们会用最通俗易懂的语言、最贴近生活的案例,手把手带你从安装开发工具开始,一步步学会开发自己的鸿蒙应用。
不管你是学生、上班族、打算转行,还是单纯对技术感兴趣,只要你愿意花一点时间,就能在这里搞懂鸿蒙开发,并做出属于自己的App!
📌 关注本专栏《零基础学鸿蒙开发》,一起变强!
每一节内容我都会持续更新,配图+代码+解释全都有,欢迎点个关注,不走丢,我是小白酷爱学习,我们一起上路 🚀

前言

随着移动互联网的发展,用户对应用的安全性要求越来越高。尤其是在涉及到金融、支付等敏感操作的场景中,传统的密码验证已经无法满足高安全性的需求。为了提升用户的安全体验,鸿蒙操作系统提供了 BiometricAuthentication API,使得开发者能够将 指纹人脸认证 等生物特征认证机制集成到应用中,提升应用的安全性。

本文将介绍如何在鸿蒙系统中实现 安全登录,并将 指纹人脸认证 结合,涵盖 BiometricAuthentication API 的使用方法认证回调与失败处理与 AccountManager 整合实现一键登录示例:构建银行级安全认证模块,以及 认证失败后的备选通道设计

使用 BiometricAuthentication API

BiometricAuthentication API 是鸿蒙系统提供的生物特征认证接口,支持通过指纹、面部识别等方式进行身份验证。这个 API 使得开发者能够在应用中集成安全的生物认证方式,确保用户身份的合法性。

1. 初始化 BiometricAuthentication

首先,开发者需要初始化 BiometricAuthentication 并配置相应的认证方式(指纹或人脸)。通过此 API,应用可以请求指纹或人脸认证操作。

BiometricPrompt biometricPrompt = new BiometricPrompt(this, 
    Executors.newSingleThreadExecutor(), new BiometricPrompt.AuthenticationCallback() {
        @Override
        public void onAuthenticationError(int errorCode, CharSequence errString) {
            super.onAuthenticationError(errorCode, errString);
            // 认证失败的处理
            System.out.println("Authentication Error: " + errString);
        }

        @Override
        public void onAuthenticationSucceeded(BiometricPrompt.AuthenticationResult result) {
            super.onAuthenticationSucceeded(result);
            // 认证成功的处理
            System.out.println("Authentication Succeeded!");
        }

        @Override
        public void onAuthenticationFailed() {
            super.onAuthenticationFailed();
            // 认证失败的处理
            System.out.println("Authentication Failed!");
        }
    });

BiometricPrompt.PromptInfo promptInfo = new BiometricPrompt.PromptInfo.Builder()
    .setTitle("Fingerprint Authentication")
    .setNegativeButtonText("Cancel")
    .build();
biometricPrompt.authenticate(promptInfo);
  • BiometricPrompt:负责启动生物认证过程。
  • AuthenticationCallback:处理认证成功、失败和错误的回调。
  • PromptInfo:设置认证提示信息,如标题和取消按钮。
2. 设置认证回调与失败处理

通过实现 AuthenticationCallback,开发者可以处理不同的认证结果。例如,如果认证成功,用户将被允许进入应用;如果认证失败,则可以提示用户重新进行认证,或者采用备用验证方式。

@Override
public void onAuthenticationSucceeded(BiometricPrompt.AuthenticationResult result) {
    // 认证成功,执行后续操作
    System.out.println("Authentication Succeeded!");
    // 可以直接进入应用的主界面或跳转到下一个步骤
}

@Override
public void onAuthenticationFailed() {
    // 认证失败,提示用户
    System.out.println("Authentication Failed!");
    // 提供用户备用验证方式(如密码或短信验证码)
}

与 AccountManager 整合实现一键登录

为了提高用户体验,我们可以将 BiometricAuthenticationAccountManager 结合,实现一键登录功能。通过 AccountManager,用户在第一次认证后可以将其信息存储起来,后续访问时使用生物认证来快速登录。

1. 配置 AccountManager

AccountManager 用于管理用户的账户信息。在用户首次登录时,使用 BiometricAuthentication API 完成身份验证后,可以将用户信息存储在 AccountManager 中。

AccountManager accountManager = AccountManager.get(this);
Account account = new Account("user123", "com.example.app");
accountManager.addAccountExplicitly(account, "password123", null);
2. 一键登录实现

一旦用户使用生物特征认证通过,系统就可以通过 AccountManager 获取用户的账户信息,进行快速登录,而无需输入密码。

BiometricPrompt biometricPrompt = new BiometricPrompt(this, 
    Executors.newSingleThreadExecutor(), new BiometricPrompt.AuthenticationCallback() {
        @Override
        public void onAuthenticationSucceeded(BiometricPrompt.AuthenticationResult result) {
            super.onAuthenticationSucceeded(result);
            // 使用 AccountManager 快速登录
            Account account = new Account("user123", "com.example.app");
            // 执行一键登录操作
            loginUser(account);
        }
    });
biometricPrompt.authenticate(promptInfo);

通过这种方式,用户只需要使用指纹或人脸认证,就能够实现快速登录,提升用户体验。

示例:构建银行级安全认证模块

在银行级应用中,安全性是至关重要的。为了保证高安全性的认证机制,我们可以结合 指纹/人脸认证双重验证,确保用户身份的合法性。

1. 构建认证流程
  • 指纹/人脸认证:用户首先通过指纹或人脸认证进行初步验证。
  • 短信验证码/动态密码:即使指纹或人脸认证成功,还可以要求用户通过短信验证码或动态密码进一步验证。
public void startBankAuthentication() {
    // 第一步:生物特征认证(指纹/人脸)
    BiometricPrompt biometricPrompt = new BiometricPrompt(this, 
        Executors.newSingleThreadExecutor(), new BiometricPrompt.AuthenticationCallback() {
            @Override
            public void onAuthenticationSucceeded(BiometricPrompt.AuthenticationResult result) {
                super.onAuthenticationSucceeded(result);
                // 第二步:发送短信验证码
                sendSMSVerificationCode();
            }

            @Override
            public void onAuthenticationFailed() {
                super.onAuthenticationFailed();
                // 提示用户认证失败,并提供备用方式(如输入密码)
            }
        });

    BiometricPrompt.PromptInfo promptInfo = new BiometricPrompt.PromptInfo.Builder()
        .setTitle("Fingerprint Authentication")
        .setNegativeButtonText("Cancel")
        .build();
    biometricPrompt.authenticate(promptInfo);
}

private void sendSMSVerificationCode() {
    // 发送短信验证码(模拟)
    System.out.println("Sending SMS verification code...");
    // 用户输入验证码后,进一步验证
}
2. 实现双重认证

在银行级应用中,指纹或人脸认证通常作为第一层认证,而短信验证码或动态密码则作为第二层认证。两者配合使用,确保用户身份的合法性。

认证失败后的备选通道设计

为了提升用户体验,在认证失败的情况下,我们需要提供 备选通道,确保用户在无法使用生物认证时,仍然能够完成登录或其他操作。

1. 备用验证方式

BiometricAuthentication 失败时,系统应该提示用户选择备用验证方式,如输入密码、通过短信验证码进行认证等。

public void onAuthenticationFailed() {
    // 认证失败后,提示用户使用密码登录
    showPasswordLoginDialog();
}

private void showPasswordLoginDialog() {
    // 弹出密码输入框,要求用户输入密码
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("Password Authentication")
           .setMessage("Please enter your password.")
           .setPositiveButton("OK", (dialog, which) -> {
               String password = passwordInputField.getText().toString();
               authenticateWithPassword(password);
           })
           .setNegativeButton("Cancel", null)
           .show();
}
2. 提供备用渠道(如手机号验证)

除了传统的密码验证,还可以使用 短信验证码动态密码 作为备选渠道。在生物认证失败后,系统会向用户的手机号发送验证码,用户输入正确验证码后即可完成认证。

public void authenticateWithPassword(String password) {
    // 使用输入的密码进行身份验证
    if (isPasswordValid(password)) {
        System.out.println("Password is valid. Logging in...");
        // 登录成功
    } else {
        System.out.println("Invalid password. Please try again.");
    }
}

总结

通过 BiometricAuthentication APIAccountManager,我们可以在鸿蒙系统中实现高安全性的登录功能,并结合 指纹/人脸认证 提供方便且安全的用户身份验证。通过 双重验证备用验证通道,我们能在保障安全的同时,提升用户体验,尤其是在如银行、支付等高安全性场景中。通过这些技术,开发者可以轻松地为应用实现一个安全、便捷的身份验证模块。

❤️ 如果本文帮到了你…

  • 请点个赞,让我知道你还在坚持阅读技术长文!
  • 请收藏本文,因为你以后一定还会用上!
  • 如果你在学习过程中遇到bug,请留言,我帮你踩坑!
Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐