一、说明 微信小程序AccessToken
获取接口指令方式和公众号相同,指定appid和appsecret,使用get请求就可以获取到。
当前在.net Core中的封装和使用:
/// <summary>
/// AccessToken状态值维护
/// </summary>
public class AccessTokenManage
{
/// <summary>
/// 小程序token
/// </summary>
public static string AccessToken = null;
/// <summary>
/// 到期时间
/// </summary>
public static DateTime NextTime { get; set; }
/// <summary>
/// 指定当前线程是否可以运行
/// </summary>
private static bool EnableRun = true;
/// <summary>
/// 启动维护
/// </summary>
public static void Run()
{
if (AccessToken == null)
{
Task.Factory.StartNew(() =>
{
while (EnableRun)
{
//超时重新,获取
//1.先获取access_token
RequestAccessToken();
//每分中轮询
Thread.Sleep(60000);
}
});
}
}
/*
access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存。
access_token的存储至少要保留512个字符空间。
access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。
*/
public static void RequestAccessToken()
{
try
{
string url = new LinkManage().GetAccessToken();
string result = NetHelper.Get(url);
Access_TokenData data = JsonConvert.DeserializeObject<Access_TokenData>(result);
if (string.IsNullOrEmpty(data.access_token))
{
throw new Exception("反序列化获取Access_TokenData失败");
}
//获取成功
AccessToken = data.access_token;
NextTime = DateTime.Now.AddSeconds(data.expires_in - 60);
//测试代码
LogHelper.Write("刷新Access_Token成功:" + AccessToken);
}
catch (Exception ex)
{
throw new Exception("获取AccessToken失败", ex);
}
}
/// <summary>
/// 请求返回的结果对象
/// </summary>
public class Access_TokenData
{
public string access_token { get; set; }
public int expires_in { get; set; }
public string errcode { get; set; }
public string errmsg { get; set; }
}
}
2.在程序启动Startup中开启维护
public Startup(IConfiguration configuration)
{
Configuration = configuration;
//配置刷新access_token
MiniPackage.AccessTokenManage.Run();
}
3.其他地方直接使用静态变量就可以了。
更多: