Integrar la autenticación con Huawei ID en una aplicación Android permite a los usuarios iniciar sesión de forma rápida y segura utilizando su cuenta de Huawei. A continuación se explica paso a paso cómo configurar el botón de login, crear los parámetros de autenticación y manejar los resultados del proceso.
¿Cómo conectar el botón de Huawei ID con la autenticación?
El punto de partida es el diseño de la pantalla de login creado previamente. El botón de Huawei ID debe tener un ID asignado en el layout, en este caso BTN_Login [0:18]. Desde la clase AuthActivity, se referencia ese botón y se le asigna un listener con setOnClickListener [0:30]. Dentro de ese listener se invoca la función encargada de todo el flujo de autenticación.
La función se define fuera del onCreate y recibe el nombre loginHuaweiIDAuth [0:46]. Su responsabilidad es construir los parámetros y lanzar el servicio de autenticación.
¿Qué parámetros necesita HuaweiIDAuthParamHelper?
Los parámetros se crean mediante el objeto HuaweiIDAuthParamHelper, que internamente utiliza HuaweiIDAuthParams [1:04]. Se selecciona DEFAULT_AUTH_REQUEST_PARAM porque la aplicación no es un juego; si lo fuera, se usaría DEFAULT_AUTH_REQUEST_PARAM_GAME [1:14].
Con estos parámetros se solicitan distintos datos del usuario:
- Mail: dirección de correo electrónico asociada al Huawei ID [1:28].
- Access token: token de acceso para llamadas posteriores a servicios [1:32].
- Profile: objeto que contiene nickname, avatar y foto de perfil, útil para personalizar la interfaz de la app [1:36].
- ID token: token que se reutiliza más adelante para push notifications [1:56].
- UID: identificador único de cada usuario de Huawei [2:04].
- ID: identificador general de la cuenta [2:10].
Una vez definidos, se consolidan invocando createParams [2:14].
¿Cómo se lanza el servicio de autenticación y se maneja la respuesta?
El servicio se obtiene a través de HuaweiIDAuthManager, al que se le pasa el contexto de la actividad y los parámetros recién creados [2:22]. Después se ejecuta startActivityForResult, enviando el signInIntent del servicio junto con un request code —en este ejemplo el valor 1000—, que actúa como identificador del flujo de login [2:38].
¿Qué ocurre en onActivityResult?
El método onActivityResult evalúa dos códigos [2:56]:
- Request code igual a 1000: confirma que la respuesta proviene del servicio de login.
- Result code cancelado: significa que el usuario perdió conexión a internet, presionó el botón de home o interrumpió el proceso. En ese caso se muestra un Toast con el mensaje "Login cancelado" [3:10].
Si el resultado no fue cancelado y el resultCode equivale a RESULT_OK, se procede a verificar el servicio.
¿Cómo se verifica que el login fue exitoso?
Se crea una task llamada authHuaweiIDTask que hereda de HuaweiIDManager [3:42]. Esta tarea parsea el resultado del intent devuelto. Si isSuccessful retorna true, se muestra un Toast indicando "Login exitoso" [3:56].
Sin embargo, el login puede fallar por razones como:
- Huawei ID incompleto o inactivo.
- Pérdida de conexión a internet justo después de que la actividad retornara
RESULT_OK [4:10].
En ese escenario se muestra un Toast con "Login falló" [4:22].
Finalmente, se regresa al setOnClickListener del botón y se invoca loginHuaweiIDAuth para que todo el flujo quede conectado [4:34].
Si ya implementaste estos pasos, comparte en los comentarios qué datos del profile planeas utilizar en tu aplicación y cómo personalizarás la experiencia de tus usuarios.