Con la API de Sync Gateway, puede autenticarse en el lado del cliente como un usuario específico para replicar los datos a los que este usuario tiene acceso. En el caso de la autenticación básica, el usuario ya debe existir en la base de datos de Sync Gateway. Hay dos formas de crear usuarios:

  • En el archivo de configuración usuarios campo.
  • En la API REST de Admin.

Para proporcionar una pantalla de inicio de sesión y registro, debe configurar un servidor de aplicaciones que gestione la creación de usuarios en consecuencia, ya que el puerto de administración (4985) no es de acceso público. En este tutorial, aprenderás cómo:

  • Utilice la API REST de Admin para crear un usuario.
  • Configurar un App Server con Node.js para gestionar los usuarios.
  • Diseñe una pantalla de inicio de sesión y registro en una aplicación Android de ejemplo para probar su App Server.

Para empezar

Descargue Sync Gateway y descomprima el archivo:

http://www.couchbase.com/nosql-databases/downloads#Couchbase_Mobile

Para este tutorial, no necesitarás un archivo de configuración. Para las propiedades básicas de configuración, puede utilizar las opciones de la línea de comandos. El binario a ejecutar se encuentra en ~/Downloads/couchbase-sync-gateway/bin/. Ejecute el programa con la tecla --ayuda para ver la lista de opciones disponibles:

Para este tutorial, se especificará el dbname, interfaz, bonito y url:

Para crear un usuario, puede ejecutar lo siguiente en su terminal:

NOTA: El campo nombre del objeto JSON no debe contener espacios.

Esto debería devolver un 201 Creado código de estado. Ahora, inicia sesión como este usuario en el puerto estándar:

La respuesta contendrá un Set-Cookie y los datos del usuario en el cuerpo.

Todos los SDKs de Couchbase Mobile tienen un método para especificar el nombre de usuario y la contraseña para la autenticación, por lo que lo más probable es que no tengas que preocuparte de hacer esa segunda solicitud para iniciar sesión.

Servidor de aplicaciones

En esta sección, utilizará la función /_usuario Admin REST API endpoint público para permitir a los usuarios registrarse a través de la aplicación.

Utilizará el popular Express para gestionar la solicitud de creación de un usuario y el módulo solicitar para dirigir el resto del tráfico a Sync Gateway.

Instala los siguientes módulos de Node.js:

Abrir un nuevo archivo servidor.js y añade lo siguiente:

Esto es lo que ocurre paso a paso:

  1. Instanciar una nueva instancia de express y utilizar la función bodyParser sólo si la ruta coincide con inscríbase en. De hecho, para todas las demás solicitudes enviadas a Sync Gateway se necesita el cuerpo de la solicitud sin procesar.
  2. Manejar el /inscripción y utilizar el módulo de solicitud para crear el usuario en el puerto de administración.
  3. Proxy todas las demás solicitudes a Sync Gateway.
  4. Inicia el servidor web Node.js en el puerto 8000.

A partir de ahora, utilizarás la siguiente url para crear usuarios a través de la aplicación y poner en marcha las réplicas push/pull:

http://localhost:8000

Cree otro usuario para comprobar que todo funciona como se espera:

Y para iniciar sesión como este usuario:

En la siguiente sección, crearás una aplicación Android sencilla con una pantalla de inicio de sesión y registro para probar esos puntos finales.

Aplicación Android

Abra Android Studio y seleccione Iniciar un nuevo proyecto de Android Studio del Inicio rápido menú.

Nombre de la aplicación SmartHomeestablezca un dominio de empresa y una ubicación de proyecto adecuados y, a continuación, haga clic en Siguiente:

En el cuadro de diálogo Dispositivos Android de destino, asegúrese de marcar Teléfono y tabletaajuste el SDK mínimo a API 22: Android 5.1 (Lollipop) para ambos, y haga clic en Siguiente:

En la siguiente Añadir una actividad a Móvil seleccione Añadir Actividad en blanco y nombre la actividad Actividad de bienvenida:

Para construir las funcionalidades de registro e inicio de sesión se utilizarán dos dependencias:

  • Biblioteca de apoyo al diseño de Androidpara tener componentes de texto de entrada que sigan las especificaciones de Material Design.
  • OkHttppara gestionar las peticiones POST a /inscripción y /smarthome/sesión.

En build.gradleañade esas dependencias:

En actividad_bienvenida.xmlañada lo siguiente LinearLayout en el interior del RelativeLayout:

Observe que ambos botones tienen un onClick atributo. Mueva el cursor del ratón sobre uno de los métodos y utilice la tecla alt + enter > Crear openLoginActivity(vista) para crear ese método en BienvenidoActividad:

Haga lo mismo con el Inscribirse botón.

A continuación, cree dos nuevas clases y diseños XML utilizando la función Actividad en blanco plantilla. Una debería llamarse Inicio de sesión y el otro Regístrese en:

En el openLoginActivity y openSignUpActivity añada las siguientes intenciones explícitas:

Cambiar la clase padre de Login.java y Registro.java de AppCompatActivity a Actividad.

En res/values/styles.xml (v21)cambia el tema principal a Theme.AppCompat.Light.DarkActionBar.

Abrir activity_sign_up.xml y añada lo siguiente dentro de RelativeLayout etiqueta:

Ahora ejecute la aplicación y seleccione la opción Inscribirse verá los elementos EditText de Material Design.

Crear una nueva clase java llamada NetworkHelper con lo siguiente:

Antes de poder realizar peticiones HTTP en tu aplicación Android, primero tienes que añadir la propiedad Red permiso en AndroidManifest.xml:

Ahora de vuelta en Registro.javaañade las siguientes propiedades:

Fije el EditarTexto componentes en el onCreate método:

Aplicar la inscríbase en para enviar una solicitud POST a :8000/inscripción con el nombre y la contraseña proporcionados:

Ejecute la aplicación e introduzca un nombre y una contraseña. Si la cuenta de usuario se ha creado correctamente, recibirá un mensaje 201 Creado y debería ver el usuario recién creado en el panel de administración:

Por último, terminemos con la pantalla de inicio de sesión. En activity_login.xmlañada lo siguiente en RelativeLayout:

Añade las propiedades a Login.java:

Y realice la misma operación de vinculación de vistas en onCreate:

Aplicar la inicio de sesión método:

Ejecute la aplicación e inicie sesión con el nombre de usuario y la contraseña que eligió anteriormente. Si la autenticación se ha realizado correctamente, recibirás un código de estado 200 OK:

NOTA: Todos los SDKs de Couchbase Lite tienen un método en el directorio Replicación que toma un nombre y una contraseña y realiza la autenticación por usted, por lo que probablemente no tendrá que hacer esa solicitud POST a /smarthome/sesión.

Conclusión

En este tutorial, ha aprendido a utilizar la API REST de Admin para crear usuarios a través de una pantalla de registro en una aplicación Android.

Autor

Publicado por James Nocentini, Redactor técnico, Móvil, Couchbase

James Nocentini es el escritor técnico encargado de la documentación de Couchbase Mobile. Anteriormente, trabajó como Developer Advocate y antes de eso como desarrollador front-end para HouseTrip. También disfruta escribiendo tutoriales de Android para raywenderlich.com en su tiempo libre.

1 Comentarios

  1. Miguel Ángel Díaz López abril 25, 2017 a 12:58 pm

    ¡Increible post! Tengo una duda, ¿Cómo puedo conectar Couchbase Sync Gateway a otro repositorio como directorio activo, etc. o hay una manera de obtener un inicio de sesión único entre Sync Gateway y Couchbase Server?

Dejar una respuesta