¿Cómo registrar la información de correo electrónico del usuario de Openfire en el cliente?
Paso 1:
El usuario ingresa la dirección de correo electrónico, el cliente verifica el formato del correo electrónico y envía el correo electrónico al servidor para verificar si se ha registrado.
Al buscar en la documentación API de smack, no encontré ningún método especial para verificar la unicidad del nombre de usuario. Sin embargo, al registrarme, si el nombre de usuario ya existe, el servidor devolverá una excepción de "conflicto". , a través de esta excepción, se puede determinar la unicidad del nombre de usuario. Sin embargo, la solicitud de registro enviada al servidor no se llevará a cabo hasta el tercer paso. En este momento, el usuario ha ingresado el código de verificación de correo electrónico, el apodo, la contraseña y otra información si se le dice al usuario que el nombre de usuario ya existe. , entonces la entrada anterior del usuario quedará completamente invalidada. Este tipo de experiencia de usuario es sin duda muy mala, por lo que tenemos que verificar instantáneamente la unicidad del nombre de usuario cuando el usuario ingresa la dirección de correo electrónico y enviarle el resultado.
Después de buscar información constantemente, finalmente descubrí que la clase org.jivesoftware.smackx.search.UserSearchManager puede permitir la búsqueda de nombres de usuario, apodos, direcciones de correo electrónico y otra información. Pero existe un requisito previo para utilizar esta clase: se debe pasar la autenticación del usuario. En otras palabras, debe iniciar sesión antes de poder utilizar esta clase; de lo contrario, el servidor devolverá una excepción "no autorizada". Dado que estamos en el proceso de registro de usuario, es imposible iniciar sesión ya. Entonces, al buscar constantemente en la documentación de smackAPI, finalmente descubrí el método org.jivesoftware.smack.XMPPConnection.loginAnonymfully(). Al observar el nombre del método, podemos saber que este método se usa para iniciar sesión de forma anónima. que el servidor debe estar encendido. Soporte para inicio de sesión anónimo.
Utilice el método loginAnonymfully() y luego utilice la clase UserSearchManager para encontrar el nombre de usuario en el servidor. Sin embargo, si utiliza la dirección de correo electrónico como nombre de usuario, no podrá encontrarlo. Esto se debe a que en el protocolo XMPP, el usuario adopta todos los nombres
.