Red de conocimiento informático - Material del sitio web - Cómo garantizar el permiso de desarrollo de la plataforma pública WeChat

Cómo garantizar el permiso de desarrollo de la plataforma pública WeChat

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 de usuarios, 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, que es el ticket único global de la cuenta pública, es decir, 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. . En un mundo ideal, un sistema que funcione 24 horas al día, 7 días a la semana, solo necesitaría obtener un 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 para esta 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 access_token y almacenarlo 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 responder a eventos del menú".

Antes de comenzar, hagamos un breve análisis. Debemos resolver los siguientes dos problemas:

1.

En Java, si desea ejecutar tareas con regularidad, debe utilizar el marco de programación java.util.Task quartz, el marco de programación Java.util.task quartz y Spring Framework también es compatible con quartz. Además, otro método es iniciar un hilo, escribir un bucle infinito usando el método run() del hilo 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 el token de acceso 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: cargue el servlet cuando se inicie el servidor web, inicie un hilo en el método init() del servlet y en el hilo El método run() obtiene periódicamente access_token a través de un bucle infinito, luego accede al token a través de un bucle infinito Thread., y luego guarda el token de acceso en una variable estática pública.

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

[js] Vea la copia simple en CODE para ver el fragmento de código derivado de mi fragmento de código

[js] p>

paquete org.liufeng.weixin.servlet;

importar javax.servlet.ServletException;

importar javax.servlet.ServletException;

importar javax.servlet.ServletException;

importar javax.servlet.ServletException;

importar javax.servlet.ServletException;