React Native

Crear aplicación:

$ npx react-native init my-project
$ cd my-project
$ yarn start

Abrir emulador:


//https://developer.android.com/studio/run/emulator-commandline
//Ir a la carpeta del emulador de android
$ cd ~/Android/Sdk/emulator
//podemos listar nuestros dipositivos
$ ./emulator -list-avds
//Ejecutar el dispositivo
$ ./emulator -avd NOMBRE_DISPOSITIVO
//Otra opción para ejecutar el dispositivo
//Performs a cold boot, and saves the emulator state on exit.
$ ./emulator -avd NOMBRE_DISPOSITIVO -no-snapshot-load

Paquetes utiles:


$ yarn add @react-navigation/native react-native-reanimated react-native-gesture-handler react-native-screens react-native-safe-area-context @react-native-community/masked-view @react-navigation/stack @react-navigation/bottom-tabs @react-navigation/drawer --save
$ yarn add react-native-elements --save
$ yarn add react-native-vector-icons --save
$ yarn add redux-saga --save
$ yarn add redux --save
$ yarn add react-redux --save
$ yarn add final-form react-final-form --save
$ yarn add apisauce --save 
$ yarn add jwt-decode --save
$ yarn add moment --save
$ yarn add prop-types --dev 

Principios de la OOP

Clases:

  1. Creación de clases:
    Si queremos guardar información, creamos una clase solo para esa funcionalidad. Estas clases se conocen como Modelos o entidades. Ejemplo Printer.
    Si necesitamos realizar una funcionalidad, creamos una clase para esto. Se las conoce como Managers, o Services Classes. Ejemplo PrinterManager.
    Estas clases suelen tener propiedades de configuración, estas nunca deben estar harcodeadas dentro. Siempre se tienen que pasar por parámetros en el constructor (Dependency Injection).
    Además, nunca se debe crear dentro de una de estas clases, una clase de estas. Es decir dentro de una clase manager no se debe crear otra clase manager. Debemos pasarle esta clase que queremos crear por parametros.
  2. Principio de única responsabilidad:
    Una clase debe tener una única responsabilidad.

Herencia:

  1. Se debe evitar dar a una clase padre información sobre las clases hijas.

OAuth

Open Authorization (OAuth) es un estándar abierto que permite flujos simples de autorización para sitios web o aplicaciones informáticas. Se trata de un protocolo propuesto por Blaine Cook y Chris Messina, que permite autorización segura de una API de modo estándar y simple para aplicaciones de escritorio, móviles y web.

OAuth permite a un usuario del sitio A compartir su información en el sitio A (proveedor de servicio) con el sitio B (llamado consumidor) sin compartir toda su identidad. Para desarrolladores de consumidores, OAuth es un método de interactuar con datos protegidos y publicarlos. Para desarrolladores de proveedores de servicio, OAuth proporciona a los usuarios un acceso a sus datos al mismo tiempo que protege las credenciales de su cuenta.

Flujo OAuth típico:

  1. Redireccionar  al cliente al «Authorization endpoint». En este punto es donde el usuario autoriza al cliente.
    Dependiendo de la API, se le envian los siguientes datos: client id, redirect url, scopes (permisos) que queremos autorizar.
  2. La api redirecciona a una url que nosotros le enviamos en el paso anterior, aceptando o denegando el acceso. Si nos brinda el acceso nos devuelve un código, el que deberemos usar, junto con el client secret, para obtener el access token.
  3. Utilizando este código que nos enviaron, junto con el client secret, enviamos una petición para obtener el access token.
  4. Si obtenemos el access token, podemos empezar a hacer peticiones a la API.

Recursos:
https://es.wikipedia.org/wiki/OAuth
https://www.digitalocean.com/community/tutorials/una-introduccion-a-oauth-2-es