Login vía API Rest

=Funcionalidad Login= Esta funcionalidad es muy común en las aplicaciones Android que requieran tener datos de los usuarios que usan la aplicación y ademas que tengan una personalización de la app con su información de perfil,aparte de la clara razón de corroborar y controlar el acceso....más

Implementación de la funcionalidad
Todo el trabajo esta dividido en carpetas(paquetes) dentro del proyecto como para tener más claro las implementaciones de las funcionalidades y su acceso de forma mas directa.

El proyecto tiene una interface que es Authenticable.java cuyo comportamiento se implementa en la clase ParseLogin.java y otra interface opcional, Passwordwatcher.java, con su constructor CredentialsTextView.java, que sirve para borrar la contraseña en el caso en que el usuario no sea el mismo al guardado hasta el momento. La interface Authenticable.java, principal en esta funcionalidad,ademas de contar con el control de credenciales con el Parse, la funcion .authenticate, implementada en ParseLogin.java, es la encargada de corroborar directamente si las credenciales existen y son correctas.

Convenciones a la hora de implementar una funcionalidad Login
Existen algunas convenciones de seguridad que deben tomarse a la hora de implementar una funcionalidad Login, que podemos enumerar aquí:
 * 1) No especificar que campo es el que esta incorrecto, esto podría dar una idea de que el otro existe y solo necesita encontrar el usuario o contraseña que le corresponda.
 * 2) Cuando se cambia el usuario borrar ambos campos de la pantalla, esto podria sino dejar la contraseña para que se pruebe a que usuario corresponde esta ultima.

Acá tenemos un ejemplo implementado en un Parse Server:

public boolean authenticate { ParseUser.logInInBackground(getUser, getPassword, new LogInCallback {           public void done(ParseUser user, ParseException e) {                if (e == null && user != null) {                    loginSuccessful;                } else if (user == null) {                    usernameOrPasswordIsInvalid(e);                } else {                    somethingWentWrong;                }                getActivity.runOnUiThread(new Runnable { @Override public void run { getProgressBar.setVisibility(View.INVISIBLE); getLoginButton.setEnabled(true); }               });            }

});       return false;    }

Se puede ver que la clase cuenta con un ProgressBar para hacer más amena la espera para el usuario.

Prerequisitos
Es necesario configurar e inicializar el Parse en le proyecto, con el URL del servidor y el id de la aplicación. Esto se hace en un label metadata en el archivo Android Manifest.



Inicializar del Parse
Luego de haber configurado la appID y el URL del servidor, hay que inicializar, cuyo proceso esta en la clase SimpleApp.

Parse.initialize(this);

=Optional:¿Qué es el Parse Server?=

Siguente:Almacenamiento en MBAAS