cordova-plugin-keychain-touch-id-ios
Version:
Scan the fingerprint of your user with the TouchID sensor (iPhone 5S, iPhone 6(S), ..) and control a key in the Keychain
121 lines (87 loc) • 4.18 kB
Markdown
# cordova-plugin-keychain-touch-id
A cordova plugin adding the iOS TouchID to your app and allowing you to store a password securely in the device keychain.
This fork removes the Android code. It is specifically for users who already have a separate Android Fingerprint plugin installed, and using the original version of this plugin would create clashes.
## Installation
### Automatically (CLI / Plugman)
Compatible with [Cordova Plugman](https://github.com/apache/cordova-plugman), compatible with [PhoneGap 3.0 CLI](http://docs.phonegap.com/en/3.0.0/guide_cli_index.md.html#The%20Command-line%20Interface_add_features), here's how it works with the CLI (backup your project first!):
From npm:
```
$ cordova plugin add cordova-plugin-keychain-touch-id-ios
$ cordova prepare
```
The latest, from the master repo:
```
$ cordova plugin add https://github.com/mattsteve/cordova-plugin-keychain-touch-id
$ cordova prepare
```
touchid.js is brought in automatically. There is no need to change or add anything in your html.
### Manually
1\. Add the following xml to your `config.xml` in the root directory of your `www` folder:
```xml
<feature name="TouchID">
<param name="ios-package" value="TouchID" />
</feature>
```
You'll need to add the `LocalAuthentication.framework` and `Security.framework` to your project.
Click your project, Build Phases, Link Binary With Libraries, search for and add the frameworks.
2\. Grab a copy of TouchID.js, add it to your project and reference it in `index.html`:
```html
<script type="text/javascript" src="js/touchid.js"></script>
```
3\. Download the source files and copy them to your project.
iOS: Copy the four `.h` and two `.m` files to `platforms/ios/<ProjectName>/Plugins`
### Base on the original touch ID created by different people
* https://github.com/EddyVerbruggen/cordova-plugin-touch-id
* https://github.com/kunder-lab/kunder-touchid-keychain
* https://github.com/PeerioTechnologies/peerio-keychain-touchid
* https://github.com/nheezemans/touchid/blob/master/src/ios/TouchID.m
Cordova plugin for interacting with iOS touchId and keychain
# Usage
Make sure you check if the plugin is installed
```
if (window.plugins.touchid) {
}
```
Call the function you like
**isAvailable(successCallback(biometryType), errorCallback(msg))** will Check if touchid is available on the used device. The `successCallback` gets the `biometryType` argument with 'face' on iPhone X, 'touch' on other devices.
**save(key,password, successCallback, errorCallback(msg))**
will save a password under the key in the device keychain, which can be retrieved using a fingerprint.
userAuthenticationRequired if true will save after authentication with fingerprint, if false there's no need to authenticate to save. Default to true, if not set.
**verify(key,message,successCallback(password), errorCallback(errorCode))**
will open the fingerprint dialog, for the given key, showing an additional message.
successCallback will return the password stored in key chain.
errorCallback will return the error code, where -1 indicated not available.
**has(key,successCallback, errorCallback)**
will check if there is a password stored within the keychain for the given key
**delete(key,successCallback, errorCallback)**
will delete the password stored under given key from the keychain
# Examples
```js
if (window.plugins) {
window.plugins.touchid.isAvailable(function(biometryType) {
var serviceName = (biometryType === "face") ? "Face ID" : "Touch ID";
window.plugins.touchid.has("MyKey", function() {
alert(serviceName + " avaialble and Password key available");
}, function() {
alert(serviceName + " available but no Password Key available");
});
}, function(msg) {
alert("no Touch ID available");
});
}
if (window.plugins) {
window.plugins.touchid.verify("MyKey", "My Message", function(password) {
alert("Touch " + password);
});
}
if (window.plugins) {
window.plugins.touchid.save("MyKey", "My Password", true, function() {
alert("Password saved");
});
}
if (window.plugins) {
window.plugins.touchid.delete("MyKey", function() {
alert("Password key deleted");
});
}
```