If this is your first time here, Run the Example to get familiar.
If you're ready to add this to your existing project, Install the Package.
Clone this repo and change directory to example
git clone https://github.com/vouched/vouched-react-native
cd vouched-react-native/example
Then, follow steps listed on the example README
- An account with Vouched
- Your Vouched Public Key
Add the package to your existing project
yarn add @vouched.id/vouched-react-native
Link the package
react-native link @vouched.id/vouched-react-native
iOS pods are not automatically installed, so we'll need to manually install them
cd ios && pod install
Ensure all prerequisites have been met.
- Determine the steps needed (ID, ID + Selfie, Authentication)
- Create the Component/Screen(s) for each step
- Use the appropriate Camera (IdCamera or FaceCamera) for the step.
- Ensure session.confirm is called once verification is complete to recieve finalized job data.
This class handles a user's Vouched session. It takes care of the API calls
const session = new VouchedSession(apiKey, sessionParams);
Parameters
- String, SessionParams
const job = await session.postFrontId(cardDetectionResult, params);
Parameters
- CardDetectResult, Params
Returns
- Job
const job = await session.postFace(faceDetectionResult);
Parameters
- FaceDetectResult
Returns
- Job
const authResult = await session.postAuthenticate(
faceDetectionResult,
jobId,
matchId
);
Parameters
- FaceDetectResult, String, Boolean
Returns
- AuthenticateResult
const job = await session.confirm();
Returns
- Job
Utility class
const insights = await VouchedUtils.extractInsights(job);
Parameters
- Job
Returns
- Insight[]
Import and add to View
import { VouchedIdCamera } from '@vouched.id/vouched-react-native';
...
<VouchedIdCamera
ref={cameraRef}
enableDistanceCheck={true}
onIdStream={async (cardDetectionResult) => {
const { instruction, step } = cardDetectionResult;
if (step === "POSTABLE") {
cameraRef.current.stop();
setMessage("Processing Image");
try {
let job = await session.postFrontId(cardDetectionResult);
let insights = await VouchedUtils.extractInsights(job);
// optionally retry based on insights
// proceed to next step
} catch (e) {
// handle error
}
} else {
setMessage(instruction)
}
}}
/>
Properties | Type | Default |
---|---|---|
enableDistanceCheck | Boolean | false |
onIdStream | Callback<CardDetectResult> |
cameraRef.current.stop();
cameraRef.current.restart();
Import and add to View
import { VouchedFaceCamera } from '@vouched.id/vouched-react-native';
...
<VouchedFaceCamera
ref={cameraRef}
livenessMode="DISTANCE"
onFaceStream={async (faceDetectionResult) => {
const { instruction, step } = faceDetectionResult;
if (step === "POSTABLE") {
cameraRef.current.stop();
setMessage("Processing Image");
try {
let job = await session.postFrontId(faceDetectionResult);
let insights = await VouchedUtils.extractInsights(job);
// optionally retry based on insights
// proceed to next step
} catch (e) {
// handle error
}
} else {
setMessage(instruction)
}
}}
/>
Properties | Type | Default |
---|---|---|
livenessMode | LivenessMode | "NONE" |
onFaceStream | Callback<FaceDetectResult> |
cameraRef.current.stop();
cameraRef.current.restart();
{
"instruction" : String,
"step": String,
"image": String?,
"distanceImage": String?
}
Note: shouldn't be POSTed until the step is "POSTABLE"
{
"instruction" : String,
"step": String,
"image": String?,
"userDistanceImage": String?
}
Note: shouldn't be POSTed until the step is "POSTABLE"
{
"result": JobResult,
"id": String,
"errors": JobError[],
"token": String
}
{
"id": String?,
"issueDate": String?,
"country": String?,
"confidences": JobConfidence,
"expireDate": String?,
"success": Boolean,
"state": String?,
"lastName": String?,
"firstName": String?,
"birthDate": String?,
"type": String?
}
{
"id": Number?,
"faceMatch": Number?,
"idGlareQuality": Number?,
"idQuality": Number?,
"idMatch": Number?,
"nameMatch": Number?,
"selfie": Number?,
"birthDateMatch": Number?,
"idQuality": Number?
}
{
"type" : String,
"message": String
}
{
"match": Number
}
{
"callbackURL": String?,
"groupId": String?,
"properties": Property[]?
}
{
"name": String,
"value": String,
}
{
"birthDate": String?,
"email": String?,
"firstName": String?,
"lastName": String?,
"phone": String?
}
"DISTANCE"
| "MOUTH_MOVEMENT"
| "BLINKING"
| "NONE"
"PRE_DETECTED"
| "DETECTED"
| "POSTABLE"
"ONLY_ONE"
| "MOVE_CLOSER"
| "MOVE_AWAY"
| "HOLD_STEADY"
| "OPEN_MOUTH"
| "CLOSE_MOUTH"
| "LOOK_FORWARD"
| "BLINK_EYES"
| "NO_CARD"
| "NO_FACE"
"UNKNOWN"
| "NON_GLARE"
| "QUALITY"
| "BRIGHTNESS"
| "FACE"
| "GLASSES"