
Compartir:
Chris es Developer Advocate en Nexmo, donde ayuda a los desarrolladores a utilizar su plataforma global de comunicaciones. Cuando no está en conferencias, se le puede encontrar vagando por el mundo.
Guía de implementación de Verify API de Nexmo
Tiempo de lectura: 4 minutos
Esta guía de implementación le indicará cómo configurar un servidor para utilizar Verify API con sus aplicaciones iOS o Android.
No es aconsejable que los desarrolladores almacenen sus claves y secretos de API en ningún dispositivo del lado del cliente, como aplicaciones para dispositivos Android o iOS. Así que en lugar de integrarse directamente con la propia Verify API en su aplicación móvil, se recomienda interactuar con la API en su propio servidor, que usted puede controlar.
En este tutorial, aprenderás a configurar un servidor Node.js que actuará como proxy para interactuar con la API Nexmo Verify. Después de haber configurado este servidor proxy API, puedes seguir nuestro tutorial iOS y Android para aprender a trabajar en red con este servidor.
Configuración del servidor
Como demostración, hemos creado un ejemplo de servidor que podrías montar en glitch: https://glitch.com/~nexmo-verify. También puedes ver el código fuente en GitHub.
El código fuente de la aplicación está documentado con comentarios, pero repasaremos las partes importantes en las siguientes secciones.
Una aplicación Express sencilla con Node.js
Esta aplicación Node.js es una simple aplicación express con body-parser para analizar respuestas JSON. La aplicación también utiliza nexmo-nodeel cliente Nexmo REST API para Node.js.
Vonage API Account
To complete this tutorial, you will need a Vonage API account. If you don’t have one already, you can sign up today and start building with free credit. Once you have an account, you can find your API Key and API Secret at the top of the Vonage API Dashboard.
Después de tener su clave API y el secreto puede navegar a server.js para iniciar el cliente Nexmo:
const Nexmo = require('nexmo');
const nexmo = new Nexmo({
apiKey: API_KEY,
apiSecret: API_SECRET
});Toda la lógica de nuestro servidor proxy se encuentra en el archivo server.js archivo. Vamos a ir a través de él punto final por punto final.
Solicitud de verificación
Para iniciar el proceso de Verify, la aplicación móvil enviará un mensaje POST al servidor proxy con un cuerpo JSON de {"number": 14155550100} No olvides incluir el código de país. El servidor proxy gestionará la solicitud de la siguiente manera:
app.post('/request', (req, res) => {
// A user registers with a mobile phone number
let phoneNumber = req.body.number;
console.log(phoneNumber);
nexmo.verify.request({number: phoneNumber, brand: 'Awesome Company'}, (err, result) => {
if(err) {
console.log(err);
//Oops! Something went wrong, respond with 500: Server Error
res.status(500).send(err);
} else {
console.log(result);
if(result && result.status == '0') {
//A status of 0 means success! Respond with 200: OK
res.status(200).send(result);
} else {
//A status other than 0 means that something is wrong with the request. Respond with 400: Bad Request
//The rest of the status values can be found here: https://developer.nexmo.com/api/verify#status-values
res.status(400).send(result);
}
}
});
});
Iniciar el proceso de verificación con la nexmo-node es sencillo. Todo lo que necesita incluir es el número de teléfono del usuario que la aplicación está verificando y la marca con la que la aplicación está asociada. La marca se utilizará en el mensaje enviado a los usuarios que verifiquen su número de teléfono. Por ejemplo, si se utiliza la marca "Awesome Company" se enviará a los usuarios el siguiente mensaje cuando verifiquen sus números de teléfono: "Código de Awesome Company: 8571. Válido durante 5 minutos".
Queremos seguir los paradigmas RESTful, por lo que si hay un error al hacer la petición, devolveremos un mensaje 500 con el error en el cuerpo de la respuesta. Si la solicitud tiene éxito, entonces vamos a responder con un 200 y un cuerpo JSON que incluye el ID de la solicitud y el estado estado de la solicitud.
Nota importante: Anote esto
request_idya que necesitarás comprobar el código 2FA o cancelar la solicitud de verificación.
La API devolverá un 200 sólo si el valor status de la solicitud es 0, lo que significa que la solicitud se ha realizado correctamente. La respuesta a esta solicitud tendrá este aspecto:
{
"request_id":"requestId",
"status":"status",
"error_text":"error"
}Si el estado es cualquier otra cosa que 0, entonces algo estaba mal con nuestra solicitud. Por lo tanto, la API responderá con un 400 y una respuesta que incluye un error_text cadena.
Verificación de cheques
Después de que un usuario inicie la solicitud de verificación, querrá introducir su código y comprobar el estado. El siguiente punto final permitirá a sus aplicaciones cliente hacerlo.
app.post('/check', (req, res) => {
//To verify the phone number the request ID and code are required.
let code = req.body.code;
let requestId = req.body.requestId;
console.log("Code: " + code + " Request ID: " + requestId);
nexmo.verify.check({request_id: requestId, code: code}, (err, result) => {
if(err) {
console.log(err);
//Oops! Something went wrong, respond with 500: Server Error
res.status(500).send(err);
} else {
console.log(result)
if(result && result.status == '0') {
//A status of 0 means success! Respond with 200: OK
res.status(200).send(result);
console.log('Account verified!')
} else {
//A status other than 0 means that something is wrong with the request. Respond with 400: Bad Request
//The rest of the status values can be found here: https://developer.nexmo.com/api/verify#status-values
res.status(400).send(result);
console.log('Error verifying account')
}
}
});
});
Este punto final es similar al punto final /request que hicimos antes. Para este punto final, se puede POST al endpoint /check con un cuerpo JSON que contenga las etiquetas code y request_id así:
{"code": "5309",
"request_id": "aaaaaaaa-bbbb-cccc-dddd-0123456789ab"}Si la aplicación móvil cliente envía el código correcto con el ID de solicitud correspondiente, el servidor responderá con un mensaje 200 OK y la respuesta JSON de la Verify API. Si hay algún error en la solicitud, el servidor responderá con un mensaje 400 y una cadena error_text Cadena. La respuesta a una solicitud de verificación correcta tendrá el siguiente aspecto:
{
"request_id": "aaaaaaaafffffffff0000000099999999",
"status": "0",
"event_id": "aaaaaaaafffffffff0000000099999999",
"price": "0.10000000",
"currency": "EUR"
} Cancelar verificación
El último endpoint a implementar nos permitirá cancelar una solicitud de verificación. Esto puede ser necesario si un usuario introduce un número de teléfono incorrecto o decide que ya no quiere iniciar sesión en la aplicación.
app.post('/cancel', (req, res) => {
//User sends the request id to cancel the verification request
let requestId = req.body.request_id;
console.log("Request ID: " + requestId);
nexmo.verify.control({request_id: requestId, cmd:'cancel'}, (err, result) => {
if(err) {
console.log(err);
//Oops! Something went wrong, respond with 500: Server Error
res.status(500).send(err);
} else {
if(result && result.status == '0') {
//A status of 0 means the verify request was succesfully cancelled! Respond with 200: OK
res.status(200).send(result);
} else {
//A status other than 0 means that something is wrong with the request. Respond with 400: Bad Request
//The rest of the status values can be found here: https://developer.nexmo.com/api/verify#status-values
res.status(400).send(result);
}
}
});
});
Como antes, el servidor enviará un 200 si todo va bien. Si hubo un error con la petición que hizo el cliente, el servidor responderá con un 400 y un error_text cadena. Si se produce cualquier otro error, el servidor responderá con un 500 y un error en el cuerpo de la respuesta. Mientras no haya ningún error, el servidor responderá con este JSON en el cuerpo:
{
"status":"0",
"command":"cancel"
} Puesta en producción
Puedes configurar fácilmente este Node.js como prueba de concepto remezclando nuestro proyecto en glitch: https://glitch.com/edit/#!/remix/nexmo-verify. Solo tienes que introducir tus propias claves y secretos de API en el archivo .env archivo. Pronto añadiremos un botón de Heroku e instrucciones sobre cómo configurar esta aplicación como una serverless Función Firebase.
Próximos pasos
Ahora que ha configurado su servidor, puede crear una aplicación Android o iOS para conectarse en red con este servidor. Lee los siguientes tutoriales para aprender a hacerlo:
Añada autenticación de dos factores a las aplicaciones Android con Verify API de Nexmo
Añada autenticación de dos factores a las aplicaciones iOS con Swift y Verify API de Nexmo.
Riesgos/exención de responsabilidad
Para una mayor protección de su servidor, limite las peticiones a su servidor en función de la dirección IP. Express Rate Limit es un buen recurso.
