customerID . Your customer API_KEY , mandatory (we provide these credentials)
face_idMandatory in the Validation process, this face_id is returned in the Onboarding of a specific User. Then when a Selfie validation is required, this is the way to validate a user against her face_id. This parameter is empty when we call an Onboarding a new user.
callback Mandatory: Your “callback URL”, with a unique ID to identify the user’s transaction in the response.
action Mandatory: "onboarding" or "validate"
onboarding Perform a new user Selfie Onboarding and get the face_id of this new user.
validate Perform a selfie validation, of an existing user (with an existing face_id), previuosly onboarded. Call this method on Password Recovery, validate transactions, or verify that the user is on front of the webcam.
3) Callback
To get the result of the Selfie Validation or the Selfie Onboarding, just implement a POST data endpoint.
Response parameters
success . Boolean, true if the Selfie was made successful
data A Form Data object with the following fields.
Selfie OnBoarding Form Data Response
success: true, //true if the Selfie is a real user
error_code: 0, // 0 == no errors
error: "", // error description in case of error
user_id: "XXXXXXXX" // face_id, store this ID on your DB an associate to
// the user, to perform future selfie validations
import org.springframework.util.MultiValueMap;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.RequestBody;
@RestController
public class AndiaController {
@PostMapping("/onboarding")
public void onboarding(@RequestBody MultiValueMap<String, String> values) {
if(values.get("success").equals("true")){
// Redirect to login page
} else {
// Redirect to signup page with error message
// values.get("message")
}
}
}
[Route("api/[controller]")]
public class AndiaController : Controller
{
[HttpPost]
public async Task<IActionResult> Onboarding([FromBody] Dictionary<string, string> values))
{
if (ModelState.IsValid)
{
try
{
if(values.GetValueOrDefault("success").Equals("true")){
// Redirect to login page
} else {
// Redirect to signup page with error message
// values.GetValueOrDefault("message")
}
}
catch (Exception e)
{
return BadRequest(e);
}
}
return BadRequest(ModelState);
}
}
var express = require('express');
var app = express();
app.post('/onboarding', function (req, res) {
if (req.body.success === "true") {
// Redirect to login page
} else {
// Redirect to signup page with error message
// req.body.message
}
})
var server = app.listen(8081, function () {
var host = server.address().address
var port = server.address().port
console.log("Example app listening at http://%s:%s", host, port)
})
require 'rubygems'
require 'sinatra'
post '/onboarding' do
if params.success == "true"
# Redirect to login page
else
# Redirect to signup page with error message
# params.message
end
end
from flask import Flask, redirect
app = Flask(__name__)
@app.route("/onboarding", methods = ['POST'])
def onboarding():
if request.form['success'] == "true":
# Redirect to login page
else:
# Redirect to signup page with error message
# request.form['message']
if __name__ == "__main__":
app.run(host='0.0.0.0', port=8081)
Selfie Validation Form Data Response
success: true, //true if the Selfie is a Match agains the given face_id
error_code: 0, // != 0 if there is an error
error: "", // error description if error_code != 0
message: "It is a Match" // description
import org.springframework.util.MultiValueMap;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.RequestBody;
@RestController
public class AndiaController {
@PostMapping("/validate")
public void validate(@RequestBody MultiValueMap<String, String> values) {
if(values.get("success").equals("true")){
// Generate JWT and redirect to home page
} else {
// Redirect to login page with error message
// values.get("message")
}
}
}
[Route("api/[controller]")]
public class AndiaController : Controller
{
[HttpPost]
public ActionResult Validate([FromBody] Dictionary<string, string> values))
{
if (ModelState.IsValid)
{
try
{
if(values.GetValueOrDefault("success").Equals("true")){
// Generate JWT and redirect to home page
} else {
// Redirect to login page with error message
// values.GetValueOrDefault("message")
}
}
catch (Exception e)
{
return BadRequest(e);
}
}
return BadRequest(ModelState);
}
}
var express = require('express');
var app = express();
app.post('/valiate', function (req, res) {
if (req.body.success === "true") {
// Generate JWT and redirect to home page
} else {
// Redirect to login page with error message
// values.GetValueOrDefault("message")
}
})
var server = app.listen(8081, function () {
var host = server.address().address
var port = server.address().port
console.log("Example app listening at http://%s:%s", host, port)
})
require 'rubygems'
require 'sinatra'
post '/validate' do
if params.success == "true"
# Generate JWT and redirect to home page
else
# Redirect to login page with error message
# params.message
end
end
from flask import Flask, redirect
app = Flask(__name__)
@app.route("/onboarding", methods = ['POST'])
def onboarding():
if request.form['success'] == "true":
# Generate JWT and redirect to home page
else:
# Redirect to login page with error message
# request.form['message']
if __name__ == "__main__":
app.run(host='0.0.0.0', port=8081)