Por fin todo lo que estuvimos viendo estos días cobra sentido. Una vez terminado este artículo la aplicación demo podrá enviar mensajes, los cuales tendrán un propietario autenticado. Cada vez que se reciba un mensaje sabremos quien lo envía y además lo recibiremos al instante y sin necesidad de actualizar. Empezamos creando el primero de los ids necesarios.
Vamos a la Google API console y seleccionamos API Access, clickamos en Create Oauth 2.0 Client ID, y si no es el primer ID que tenemos buscamos Create another Client ID. Seleccionamos web application para el tipo de aplicación. Y para conocer el valor del campo hostname vamos al Google Cloud Console, a la sección App Engine. Localizamos la sección Application Settings y copiamos la url que hay en la sección Application Default Version URL. Volvemos a la pantalla de creación del Client ID y después de pegar el valor en el campo hostname, finalizamos la creación del Client ID.
Vamos al proyecto base en el que estuvimos trabajando en estos artículos. Abrimos el archivo Consts.java y modificamos el valor del siguiente parámetro con el web client ID que acabamos de crear:
public static final String WEB_CLIENT_ID = "*** ENTER YOUR WEB CLIENT ID ***";
Aprovechamos que estamos en el archivo Consts.java y modificamos el valor de IS_AUTH_ENABLED a true.
Para crear este cliente ID necesitamos la firma SHA1 del certificado con el que firmamos nuestra aplicación, para ello en un terminal ejecutamos lo siguiente:
keytool -list -v -keystore ~/.android/debug.keystore
-alias androiddebugkey -storepass android -keypass android
Con este comando estamos obteniendo la firma del certificado de desarrollo, que será el que se utilice mientras hacemos pruebas, así que en el momento de firmar para producción la aplicación, no olvidéis repetir esta operación sustituyendo en el comando la ruta y el alias de vuestro certificado, además de las password de cada uno. Os marco en rojo cuales son los valores que debéis modificar si vais a firmar con vuestra keystore de producción. Fijaros que entre toda la información que os da el comando cojáis la que hace referencia a SHA1.
Ya con la firma SHA1, vamos a la Google API Console y seleccionáis vuestro proyecto. Vais a API Access y creamos un nuevo client ID. Pero ahora seleccionando en el tipo de aplicación Installed Application y dentro de las opciones que aparecen escogéis Android. Rellenáis el resto de campos con la clave SHA1 y el package de la aplicación, tal como se indica. Finalmente aceptáis.
Ahora que ya tenemos el client ID creado, lo copiamos y vamos al Google Cloud Console y abrimos el Mobile Backend Settings pinchando en la opción Settings. Modificamos el parámetro de Authorization / Authentication a Secured by Client IDs. Rellenamos los dos campos que aparecen con los web client ID y Android Client ID que creamos antes. Salvamos y listo.
Para finalizar volvemos a ejecutar la aplicación en nuestro terminal Android. Al iniciarse la aplicación en mi caso que tengo más de una cuenta os pedirá que seleccionéis una. Ahora cada vez que enviéis un mensaje veréis que lo hace identificando al usuario. Para poder probar esta parte es necesario hacerlo en un dispositivo real, no se puede hacer en el emulador.
Además si queréis comprobar realmente que los mensajes llegan al momento a otros dispositivos e identificando correctamente al usuario, lo debéis probar con dos dispositivos físicos y cada uno con una cuenta diferente de Google.