Red de conocimiento informático - Problemas con los teléfonos móviles - [051] Tutorial de desarrollo de la plataforma pública WeChat, Parte 22: Cómo garantizar el número de visitas

[051] Tutorial de desarrollo de la plataforma pública WeChat, Parte 22: Cómo garantizar el número de visitas

Para permitir que los desarrolladores externos brinden a los usuarios servicios personalizados más valiosos, la plataforma pública WeChat ha abierto muchas interfaces, incluidas interfaces de menú personalizadas, interfaces de servicio al cliente, interfaces de adquisición de información del usuario, interfaces de agrupación de usuarios, interfaces de envío de grupos, etc. . Los desarrolladores deben pasar el mismo parámetro access_token al llamar a estas interfaces, es decir, la integridad de la cuenta pública. p>

Para permitir que los desarrolladores externos brinden a los usuarios servicios personalizados más valiosos, la plataforma pública WeChat ha abierto múltiples interfaces, incluidas interfaces de menú personalizadas, interfaces de servicio al cliente e interfaz de obtención de información del usuario. , interfaz de agrupación de usuarios, interfaz de envío de grupos, etc. Al llamar a estas interfaces, los desarrolladores deben pasar el mismo parámetro access_token, que es el número de ticket único global de la cuenta pública, que también es la credencial de acceso a la interfaz.

El período de validez de access_token es de 7200 segundos (dos horas). Durante el período de validez, se puede usar todo el tiempo. Solo cuando el access_token caduque, es necesario volver a llamar a la interfaz para obtener el access_token. . Idealmente, para un sistema que funciona las 24 horas del día, los 7 días de la semana, solo necesita obtener access_token 12 veces al día, es decir, un access_token cada 2 horas. Si vuelve a obtener un token de acceso dentro del período de validez, el token de acceso obtenido la última vez dejará de ser válido.

Actualmente, la frecuencia de llamadas a la interfaz access_token está limitada a 2000 veces por día. Obviamente, no es razonable llamar a la interfaz access_token para obtener las credenciales de acceso de la interfaz cada vez antes de enviar un mensaje de servicio al cliente, obtener información del usuario o enviar un mensaje grupal. Por un lado, llevará más tiempo (una operación de llamada de interfaz más) y, por otro lado, el límite de 2000 llamadas por día no es suficiente. Por lo tanto, en aplicaciones prácticas, debemos almacenar el access_token obtenido y luego llamar a la interfaz access_token periódicamente para actualizarlo y garantizar que el access_token sea válido en todo momento.

A continuación se describe cómo obtener y almacenar access_token periódicamente. Tenga en cuenta: este artículo no presenta cómo llamar a la interfaz para obtener access_token. Para obtener detalles sobre cómo obtener access_token, consulte el artículo "Tutorial de desarrollo de cuentas públicas de WeChat, parte 14: creación de un menú personalizado y respuesta a eventos del menú".

Antes de comenzar, hagamos un breve análisis. Lo que tenemos que resolver no son más que los siguientes dos problemas:

1.

En Java, si desea ejecutar una tarea con regularidad, debe usar la clase java.util.Timer. Para aquellos a quienes les gusta usar marcos, pueden usar el marco de programación de tareas de código abierto quartz. que también es compatible con Spring Framework. Además, hay otra forma de iniciar un hilo, que es utilizar el método thread run() para escribir un bucle infinito y luego usar Thread.sleep() para garantizar que el hilo ejecute tareas con regularidad.

2. ¿Dónde guardar el token de acceso?

Para el almacenamiento del token de acceso, puede considerar almacenarlo en un archivo, base de datos o en la memoria. El método de almacenamiento a utilizar depende de la situación real del proyecto. Si solo hay un servidor, almacenar access_token directamente en la memoria es el método más simple y efectivo.

En este artículo, demostraré el proceso de obtención y almacenamiento regular de access_token de la siguiente manera: cargar el servlet cuando se inicia el servidor web, iniciar un subproceso en el método init() del servlet y pasar la ejecución del subproceso. método () El token de acceso se obtiene periódicamente a través del bucle sin fin en el hilo.

En el método run() del servlet, el token de acceso se obtiene periódicamente a través del bucle sin fin, y luego el token de acceso se guarda en la variable estática pública.

Cree una clase InitServlet en el proyecto, el código es el siguiente:

paquete org.liufeng.weixin.servlet;

importar javax.servlet.ServletException ;

p>

importar javax.servlet.ServletException;

importar javax.servlet.ServletException;

importar javax.servlet.ServletException;