


Comment résoudre le problème d'expiration du access_token dans le développement .Net WeChat
Cet article présente principalement en détail comment résoudre le problème d'expiration du access_token dans le développement de .Net WeChat. Les amis intéressés peuvent s'y référer
Parce que access_token sera inclus dans les futures fonctions avancées, il est donc souvent utilisé. Je dois modifier le access_token expliqué plus tôt ici.
De plus, il convient de noter que access_token change et a son propre cycle. L'explication officielle est : "la période de validité est de 7200 secondes", ce qui nous oblige à stocker le access_token obtenu dans un fichier physique ou une application, et à le demander. après l'expiration, modifiez ce contenu et lisez-le si nécessaire
Certaines personnes ont peut-être pensé que s'il expire, j'en obtiendrai simplement un. Le même effet peut être obtenu sans fichiers physiques ni application, mais vous devez y prêter attention. la plateforme WeChat Le nombre d'access_tokens obtenus par jour est également limité. Un utilisateur peut démarrer plusieurs fois. S'il y a beaucoup d'utilisateurs, il sera certainement dépassé. Nous implémentons donc toujours ces fonctions selon les idées ci-dessus : avant cela nous avons déjà compris la méthode d'obtention d'access_token (connexion), il ne nous reste plus qu'à nous assurer qu'elle est mise à jour à tout moment
Créez d'abord une classe Access_token <.>
/// <summary> ///Access_token 的摘要说明 /// </summary> public class Access_token { public Access_token() { // //TODO: 在此处添加构造函数逻辑 // } string _access_token; string _expires_in; /// <summary> /// 获取到的凭证 /// </summary> public string access_token { get { return _access_token; } set { _access_token = value; } } /// <summary> /// 凭证有效时间,单位:秒 /// </summary> public string expires_in { get { return _expires_in; } set { _expires_in = value; } } }Utilisez le fichier XML suivant pour stocker access_token, créez un XMLFile.xml et écrivez le contenu de la balise Access_YouXRQ comme un temps passé, afin que on peut commencer par le début Lors de l'appel, on constate qu'il a expiré, puis un nouveau access_token est obtenu.
<?xml version="1.0" encoding="utf-8"?> <xml> <Access_Token>初始值可以随便写</Access_Token> <Access_YouXRQ>1980/12/12 16:06:38</Access_YouXRQ> </xml>Modifiez la méthode précédente d'obtention d'Access_token et laissez-la attribuer une valeur à l'instance Access_token
public static Access_token GetAccess_token() { string appid = 你的appid ; string secret = 你的secret; string strUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appid + "&secret=" + secret; Access_token mode = new Access_token(); HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(strUrl); req.Method = "GET"; using (WebResponse wr = req.GetResponse()) { HttpWebResponse myResponse = (HttpWebResponse)req.GetResponse(); StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8); string content = reader.ReadToEnd(); //Response.Write(content); //在这里对Access_token 赋值 Access_token token = new Access_token(); token = JsonHelper.ParseFromJson<Access_token>(content); mode.access_token = token.access_token; mode.expires_in = token.expires_in; } return mode; }La méthode ci-dessus utilise le traitement des objets Json, j'ai donc posté le code de JsonHelper pour votre référence Voici le code de JsonHelper.cs :
.
using System; using System.IO; using System.Text; using System.Runtime.Serialization.Json; public class JsonHelper { /// <summary> /// 生成Json格式 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="obj"></param> /// <returns></returns> public static string GetJson<T>(T obj) { DataContractJsonSerializer json = new DataContractJsonSerializer(obj.GetType()); using (MemoryStream stream = new MemoryStream()) { json.WriteObject(stream, obj); string szJson = Encoding.UTF8.GetString(stream.ToArray()); return szJson; } } /// <summary> /// 获取Json的Model /// </summary> /// <typeparam name="T"></typeparam> /// <param name="szJson"></param> /// <returns></returns> public static T ParseFromJson<T>(string szJson) { T obj = Activator.CreateInstance<T>(); using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(szJson))) { DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType()); return (T)serializer.ReadObject(ms); } } }Nous avons également besoin d'un moyen de déterminer si le access_token a expiré et de mettre à jour le fichier XML s'il expire.
/// <summary> /// 根据当前日期 判断Access_Token 是否超期 如果超期返回新的Access_Token 否则返回之前的Access_Token /// </summary> /// <param name="datetime"></param> /// <returns></returns> public static string IsExistAccess_Token() { string Token = string.Empty; DateTime YouXRQ; // 读取XML文件中的数据,并显示出来 ,注意文件路径 string filepath = Server.MapPath("XMLFile.xml"); StreamReader str = new StreamReader(filepath, System.Text.Encoding.UTF8); XmlDocument xml = new XmlDocument(); xml.Load(str); str.Close(); str.Dispose(); Token = xml.SelectSingleNode("xml").SelectSingleNode("Access_Token").InnerText; YouXRQ = Convert.ToDateTime(xml.SelectSingleNode("xml").SelectSingleNode("Access_YouXRQ").InnerText); if (DateTime.Now > YouXRQ) { DateTime _youxrq = DateTime.Now; Access_token mode = GetAccess_token(); xml.SelectSingleNode("xml").SelectSingleNode("Access_Token").InnerText = mode.access_token; _youxrq = _youxrq.AddSeconds(int.Parse(mode.expires_in)); xml.SelectSingleNode("xml").SelectSingleNode("Access_YouXRQ").InnerText = _youxrq.ToString(); xml.Save(filepath); Token = mode.access_token; } return Token; }D'accord, après avoir terminé le travail ci-dessus, il me suffit d'appeler ce qui suit lors de l'utilisation de access_token et tout ira bien, "Les clients n'ont plus besoin s'inquiéter de l'expiration du jeton"
string _access_token = IsExistAccess_Token();
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Dreamweaver CS6
Outils de développement Web visuel

Navigateur d'examen sécurisé
Safe Exam Browser est un environnement de navigation sécurisé permettant de passer des examens en ligne en toute sécurité. Ce logiciel transforme n'importe quel ordinateur en poste de travail sécurisé. Il contrôle l'accès à n'importe quel utilitaire et empêche les étudiants d'utiliser des ressources non autorisées.

Version crackée d'EditPlus en chinois
Petite taille, coloration syntaxique, ne prend pas en charge la fonction d'invite de code

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Version Mac de WebStorm
Outils de développement JavaScript utiles