智能客服
你问我答,随时在线为你解决问题
开通:提供移动端开通生物特征(指纹/3D人脸)IFAA免密认证的能力。使用用户已有的生物特征类型进行开通,会开通移动端对应生物特征类型的IFAA免密认证能力。
认证:提供移动端认证生物特征(指纹/3D人脸)IFAA免密认证的能力。使用用户已开通的生物特征进行认证,认证成功;使用未开通的生物特征进行认证,认证失败。
注销:提供移动端注销生物特征(指纹/3D人脸)IFAA免密认证的能力。使用用户已开通的生物特征类型进行注销,会注销移动端对应生物特征类型的IFAA免密认证能力。
应用已接入IIFAA联盟,可以从IIFAA中心服务器获取签名数据。
移动端设备需要支持生物特征(指纹/3D人脸),查询当前移动端设备是否支持ATL4级别的认证可信等级。
- import { userAuth } from '@kit.UserAuthenticationKit';
- import { BusinessError } from '@kit.BasicServicesKit';
- // ...
- function getAvailableStatus() {
- try {
- // 示例,查询设备人脸识别是否支持ATL4级别的认证可信等级
- userAuth.getAvailableStatus(userAuth.UserAuthType.FACE, userAuth.AuthTrustLevel.ATL4);
- console.info('current auth trust level is supported');
- } catch (error) {
- const err: BusinessError = error as BusinessError;
- console.error(`current auth trust level is not supported. Code is ${err?.code}, message is ${err?.message}`);
- }
- }
移动端设备使用此服务时需要处于联网状态。
IFAA服务会将匿名化的指纹ID和面容ID等个人信息返回至应用,以提供绑定具体生物特征的免密认证能力。应用将个人信息上云前,需要向用户明示并且取得同意,详细请参考个人数据处理说明。

注册流程说明:
认证流程说明:
关闭流程说明:
以下是开通、认证、注销的所需要的接口,具体API说明详见接口文档。
| 接口名 | 描述 |
|---|---|
| register(registerData: Uint8Array): Promise<Uint8Array> | 开通IFAA免密认证,使用Promise异步回调。 |
| auth(authToken: Uint8Array, authData: Uint8Array): Promise<Uint8Array> | IFAA免密认证,使用Promise异步回调。 |
| deregisterSync(deregisterData: Uint8Array): void | 注销IFAA免密认证,同步返回结果。 |
| getAnonymousIdSync(userToken: Uint8Array): Uint8Array | 获取IFAA免密认证的匿名化ID,同步返回结果。 |
导入相关模块。
- import { ifaa } from '@kit.OnlineAuthenticationKit';
- import { userAuth } from '@kit.UserAuthenticationKit';
- import { BusinessError } from '@kit.BasicServicesKit';
开通IFAA免密认证能力。
- try {
- // 开发者根据IIFAA协议构造TLV入参,转换为Uint8Array,得到userTokenFp,再使用ifaa.getAnonymousIdSync接口。
- let getAnonIdResult: Uint8Array = ifaa.getAnonymousIdSync(userTokenFp);
- console.info('Succeeded in getting anonymous id, result:', getAnonIdResult);
- } catch (error) {
- const err = error as BusinessError;
- console.error(`Failed to get anonymous id. Code is ${err.code}, message is ${err.message}`);
- }
- try {
- // 开发者需使用getAnonymousIdSync从服务端获取签名后的开通数据
- // 开发者将开通数据(IIFAA协议的TLV格式)转换为Uint8Array,得到tlvRegisterFp,再使用ifaa.register接口。
- let registerPromise: Promise<Uint8Array> = ifaa.register(tlvRegisterFp);
- registerPromise.then(registerResult => {
- console.info('Succeeded in doing register, result:', registerResult);
- // 开通成功,开发者获取ifaa.register结果并处理。
- // ...
- }).catch((err: BusinessError) =>{
- console.error(`Failed to call register. Code: ${err.code}, message: ${err.message}`);
- // 开通失败,开发者获取ifaa.register错误并处理。
- });
- } catch (error) {
- const err = error as BusinessError;
- console.error(`Failed to register. Code is ${err.code}, message is ${err.message}`);
- }
使用IFAA免密认证能力。
- // 开发者根据IIFAA协议构造TLV入参,转换为Uint8Array,得到userTokenFp,再使用ifaa.getAnonymousIdSync接口。
- let getAnonIdResult: Uint8Array;
- try {
- getAnonIdResult = ifaa.getAnonymousIdSync(userTokenFp);
- console.info('Succeeded in getting anonymous id, result:', getAnonIdResult);
- } catch (error) {
- const err = error as BusinessError;
- console.error(`Failed to get anonymous id. Code is ${err.code}, message is ${err.message}`);
- }
-
- // 开发者需使用getAnonymousIdSync从服务端获取签名后的认证数据
- // 获取此次免密支付的challenge
- let ifaaChallenge: Uint8Array = new Uint8Array([0]);
- try {
- ifaaChallenge = ifaa.preAuthSync();
- } catch (error) {
- const err = error as BusinessError;
- console.error(`Failed to pre auth. Code is ${err.code}, message is ${err.message}`);
- }
- let authParam: userAuth.AuthParam = {
- challenge: ifaaChallenge,
- authType: [userAuth.UserAuthType.FINGERPRINT],
- authTrustLevel: userAuth.AuthTrustLevel.ATL4
- };
-
- try {
- let userAuthInstance = userAuth.getUserAuthInstance(authParam, {title: ' '});
- userAuthInstance.on('result', {
- onResult(result) {
- let authToken = result.token;
- try {
- // 生物特征认证成功后,调用IFAA认证
- console.info('IFAA auth start');
- // 开发者将认证数据(IIFAA协议的TLV格式)转换为Uint8Array,得到tlvAuthFp,再使用ifaa.authSync接口。
- // 开发者根据业务需求选择同步/异步接口
- let authResult: Uint8Array = ifaa.authSync(authToken, tlvAuthFp);
- console.info('Succeeded in auth, result:', authResult);
- // 开发者处理authResult
- // ...
- } catch (error) {
- const err: BusinessError = error as BusinessError;
- console.error(`Failed to call auth. Code is ${err.code}, message is ${err.message}`);
- // ...
- }
- }
- });
- userAuthInstance.start();
- } catch (error) {
- const err = error as BusinessError;
- console.error(`Failed to user auth. Code is ${err.code}, message is ${err.message}`);
- }
注销IFAA免密认证能力。
- // 开发者根据IIFAA协议构造TLV入参,转换为Uint8Array,得到userTokenFp,再使用ifaa.getAnonymousIdSync接口。
- try {
- let getAnonIdResult: Uint8Array = ifaa.getAnonymousIdSync(userTokenFp);
- console.info('Succeeded in getting anonymous id, result:', getAnonIdResult);
- } catch (error) {
- const err = error as BusinessError;
- console.error(`Failed to get anonymous id. Code is ${err.code}, message is ${err.message}`);
- }
-
- // 开发者需使用getAnonymousId的结果从服务端获取签名后的注销数据
- // 开发者将注销数据(IIFAA协议的TLV格式)转换为Uint8Array,得到tlvDeregisterRp,再使用ifaa.deregisterSync接口。
- try {
- ifaa.deregisterSync(tlvDeregisterRp);
- // ...
- } catch (error) {
- const err = error as BusinessError;
- console.error(`Failed to deregister. Code is ${err.code}, message is ${err.message}`);
- // ...
- }
智能客服
你问我答,随时在线为你解决问题
合作咨询
我们的专家服务团队将竭诚为您提供专业的合作咨询服务
解决方案
精准高效的一站式服务支持,助力开发者商业成功