我是智能手机指纹认证的新手。众所周知,三星 S5 目前支持指纹扫描仪。是否可以开发一个可以使用扫描仪对用户进行身份验证的自定义应用程序?我只需要知道用户的身份以及他是否已正确通过身份验证。然后我的应用程序可以从那里获取它并与后端集成。
4 回答
谷歌现在宣布了一个通用的安卓指纹 API,任何自定义应用程序都可以使用它来进行授权,而不仅仅是谷歌的原生应用程序。看来未来会越来越光明!
取自以下链接的 Android 开发者页面:
“要通过指纹扫描对用户进行身份验证,请获取新FingerprintManager
类的实例并调用该authenticate()
方法。”
但是,您还必须包括此权限:
<uses-permission android:name="android.permission.USE_FINGERPRINT" />
如果您想了解更多信息,请访问此 URL 并向下滚动至Authentication
:
https://developer.android.com/about/versions/marshmallow/android-6.0.html#fingerprint-authentication
三星提供 Pass API 来注册、请求和验证指纹。它在这里SAMSUNG FINGER PRINT API。还有一个示例程序。
Android M 的指纹 API 预览可在此处与Sample App一起找到。在撰写本文时,Android M 的 Android 兼容性定义尚未发布。因此,如果指纹传感器(指纹框架的关键硬件组件)被保留为“应该”要求(很可能是真的),那么 OEM 会决定是否合并传感器。但是,由于Android Pay与指纹框架紧密相关,这可能会促使 OEM 加入指纹传感器。
我在 google 示例中发现了这一点,该示例演示了如何在应用程序中使用注册的指纹来验证用户身份,然后再进行一些操作,例如购买商品。
首先,您需要使用KeyGenerator在 Android 密钥库中创建一个对称密钥,该对称密钥只能在用户使用指纹进行身份验证并传递KeyGenParameterSpec后使用。
通过将KeyGenParameterSpec.Builder.setUserAuthenticationRequired设置 为 true,您可以仅在用户对其进行身份验证后才允许使用该密钥,包括在使用用户指纹进行身份验证时。
然后通过使用创建的对称密钥初始化的Cipher调用FingerprintManager.authenticate开始监听指纹传感器上的指纹。或者,您可以回退到服务器端验证密码作为身份验证器。
验证指纹(或密码)后,将 调用FingerprintManager.AuthenticationCallback#onAuthenticationSucceeded() 回调。
它需要 SDK V23。AFAIK 它对三星 S5 没有用,但它可能会帮助其他人使用此功能。