实现Touch ID验证登录

官方文档 https://developer.apple.com/documentation/localauthentication/lacontext

第一步 :添加依赖库

 LocalAuthentication .Framework

第二步:准许验证和登录逻辑

准许验证逻辑:(必须是登录之后)

  • 开启:在app登录后,在“用户信息-安全”,点击开启“指纹登录”;
  • 验证TouchID:检测当前设备是否支持TouchID,若支持则发起TouchID验证;
    LAContext *laContext = [[LAContext alloc] init];

    BOOL canAuth = [laContext canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:nil];
  • 生成设备账号/密码:TouchID验证通过后,根据当前已登录的账号和硬件设备Token,生成设备账号/密码(规则可自定,密码要长要复杂),并保存在keychain;
if (canAuth) {
        [laContext evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:@"通过Home键验证已有手机指纹" reply:^(BOOL success, NSError * _Nullable error) {
            NSLog(@"%d",success);
            //此处获取已登录账号及密码加密
        }];
    }
  • 生成设备账号/密码后,将原账号及设备账号/密码,加密后发送到服务端进行绑定;
  • 验证原账号及设备账号有效后,返回相应状态,绑定成功则完成整个TouchID(设备)绑定流程。
IMG_1638.PNG
IMG_1639.PNG

指纹登录
在设备(用户)绑定之后,并且用户账号退出后,可以使用指纹登录,若当前设备未绑定,则不会出现“指纹登录”按钮

  • TouchID登录:在用户登录界面,点击“指纹登录”;
  • 验证TouchID:检测当前设备是否支持TouchID,若支持则发起TouchID验证;
  • 登录:读取app在本机的设备账号/密码,调用设备登录接口,发起登录请求;
  • 成功:验证设备账号/密码后,返回相应状态,登录成功则完成整个TouchID登录流程。

总结:Touch ID验证的调用的方法有两个,一个是判断当前设备是否支持Touch ID,第二个就是验证指纹,此外还有个是evaluatedPolicyDomainState判断本地指纹库是否更新。“ However, the nature of the change cannot be determined from this data.”可能做完的感受就是这就话了,你不能从返回值得到有用的信息,仅仅是做判断。蛮好的\··||··/

推荐阅读更多精彩内容