miércoles, 10 de julio de 2019

Sustituir una expresión regular en typescript


En algún proyecto, necesitaremos reemplazar expresiones regulares.

Primero veamos qué es una expresión regular.

Expresión regular (wikipedia)


En el área de la programación las expresiones regulares son un método por medio del cual se pueden realizar búsquedas dentro de cadenas de caracteres. Sin importar la amplitud de la búsqueda requerida de un patrón definido de caracteres, las expresiones regulares proporcionan una solución práctica al problema. Adicionalmente, un uso derivado de la búsqueda de patrones es la validación de un formato específico en una cadena de caracteres dada, como por ejemplo fechas o identificadores.





Pongamos un ejemplo:


Supongamos que debemos enviar un mensaje de alerta y consumimos datos de un API, el API nos devuelve cadenas de texto como las siguientes:

"Hola esta es una cadena de caracteres<br><br><br>"


showalert(message){
console.log("este es el mensaje sin reemplazar",message);
var new_message = message.toString().replace(/<br>/g,"");
console.log("este es el mensaje reemplazando caracteres", new_message);
}

Qué estamos haciendo?

En estas líneas, recibimos en la función la cadena mencionada arriba
showalert(message)


Lo siguiente es declarar una variable dentro de nuestra función:


var new_message = message.toString().replace(/<br>/gi,"");

Lo que hacemos es reemplazar todos los caracteres "<br>" por una cadena vacía
(espacio en blanco) y la letra gi significa que no distingue si son mayúsculas o minúsculas..

Lo que imprimirá es lo siguiente:


"Hola esta es una cadena de caracteres"


Si lo hacemos de la siguiente manera (así se encuentra en el código arriba mostrado):

var new_message = message.toString().replace(/<br>/g,"");


Lo que hacemos es reemplazar todos los caracteres "<br>" por una cadena vacía
(espacio en blanco) y la letra g significa que SI distingue si son mayúsculas o minúsculas..






















martes, 9 de julio de 2019

Linkedin OAuth 2.0 en ionic 3

Paso 1: Configure su aplicación:

En la página linkedin desarrolladores, crear una nueva aplicación, y tener en la mano el ID de cliente :, Secreto del cliente: y OAuth 2.0 configuración URL de redireccionamiento: es al lugar en donde se redirige nuestro sitio después de hacer las peticiones.

Paso 2: Solicitar un código de autorización:

Lo que es importante es que la URL de la petición sea de esta manera:
Yo lo hice por medio de inAppBrowser, me dirijo al inicio de sesión y permisos de linkedin.

Paso 3: Intercambio de código de autorización para un token de acceso:

Una vez que acceda y permita un registro, se genere un token de acceso con una duración promedio de 30 minutos, busque la manera en que pueda encontrar ese token de acceso porque se utiliza en los siguientes pasos.
Ejemplo de la extracción del token:
this.browser.on ('loadstart'). subscribe ((e) => {
console.log(e.url);
this.url_devuelta = e.url;

if(e.url.match(/^https:\/\/localhost\//)) {
  var miurl = e.url.replace(this.linkedin.redirect_uri+'/?code=', '');
  console.log("token "+(miurl));                            // aquí extraigo el token
  console.log(miurl.length + ' code units long');
  this.autorizaToken(miurl);
  //this.getLinkedInUserDetails(miurl);
 

} else {
  console.log("error "+(this.url_devuelta));
}
});

Paso 4: Hacer solicitudes autenticadas:

Ahora vamos a revalidar el token de la siguiente manera:

Paso 5 Extraer el perfil de usuario:

Con la revalidación del token, ahora debemos enviar una petición con Encabezados al api de linkedin, lo hice de la siguiente manera:
getLinkedInUserDetails () {
  console.log(this.token_valida);
 console.log("Vivo en la siguiente funcion  "+ this.token_valida);

   let headers = new HttpHeaders().set("Authorization",'Bearer '+ this.token_valida);
   
  

          console.log("Armando los headers "+ 'https://api.linkedin.com/v2/me' + {headers: headers});
          return this.http.get('https://api.linkedin.com/v2/me', {headers: headers}).toPromise()
         .then(res =>
          {
            console.log(res);

         }).catch(error => {
        
          console.log(error);

        
        });
      
      
 }
Esos son los pasos a seguir para la autenticación de linkedin.
Saludos

lunes, 8 de julio de 2019

Autenticación con huella dactilar en Ionic 3



Documentación Ionic :https://ionicframework.com/docs/v3/native/fingerprint-aio/


Para implementar la Huella digital en ionic 3, debemos instalar lo siguiente:


Instala los complementos Cordova y Ionic Native:


ionic cordova plugin add cordova-plugin-fingerprint-aio


Algo muy muy importante es revisar el core de la aplicación y versión que se utiliza, eso se revisa en package.json, bajo la etiqueta "@ionic-native/core".

En mi caso se encuentra así: "@ionic-native/core": "4.4.0"

Ahora vamos a instalar el plugin:


npm install --save @ionic-native/fingerprint-aio@4


En mi caso utilizo la versión 3.14.0, así que se instala de la siguiente manera:


npm install --save @ionic-native/fingerprint-aio@3.14.0



Ya tenemos listo los plugins, ahora vamos a importarlo en el app.module:


import {FingerprintAIO } from '@ionic-native/fingerprint-aio';

providers: [

FingerprintAIO,

]










Ahora en la página que vayamos a utilizar para escanear la huella dactilar (yo cree


una página que se llama "huella_modal", pero puedes llamarla como quieras), debemos


importar el plugin y ponerlo en el constructor para utilizarlo:

import { FingerprintAIO } from '@ionic-native/fingerprint-aio';
Lineas más abajo dentro del constructor:

private faio: FingerprintAIO,




Ahora, se debe importar Platform y tambien agregarlo al constructor:

import {Platform} from 'ionic-angular';




Lineas más abajo dentro del constructor:





private platform: Platform,





En caso de que necesiten diferenciar si la plataforma es android o iOS, agregan la siguiente


función dentro de las llaves que siguen al constructor:


constructor(
private platform: Platform,
private faio: FingerprintAIO,
) {
this.platform.ready().then(() => {
console.log("Plataforma lista, enviando a fingerprintAvailable");
this.fingerprintAvailable(); //esta línea porque se usa en la siguiente función
if (this.platform.is('ios')) {
console.log ("soy iOS") ;
} else if (this.platform.is('android')) {
console.log ("soy android") ;
}
});



Justo después que la plataforma se encuentra lista, mandaremos llamar la función:

fingerprintAvailable();


Esta función lo que hace, es verificar si la huella digital o el

face ID se encuentran en nuestro dispositivo

async fingerprintAvailable(){
    console.log("Voy a verificar si tiene huella");
    try{
     await this.platform.ready();
     const available = await this.faio.isAvailable()
     console.log("constatnte aviable",available );
    
     if(available == "finger" || available == "face"){
    
      console.log("Si cuenta con el servicio");
      this.scan(); //vamos a la función escanear
}
     else{
    
      console.log("No cuenta con el servicio");
     }
    }
    catch(e){
console.log(e);
    }
    
}


La siguiente función sirve para escaear la huella o faceId

scan(){
this.faio.show({
clientId: 'Fingerprint-Demo',
clientSecret: 'password', //Only necessary for Android
})
.then((result: any) => {
// Si la huella funciona imprime el console.log, de lo contrario se va al error
console.log("huella funciona huella modal");
}).catch(error => {
});
}










Sustituir una expresión regular en typescript

En algún proyecto, necesitaremos reemplazar expresiones regulares. Primero veamos qué es una expresión regular. Expresión regular ( wik...