.Net Core获取和刷新微信小程序AccessToken

一、说明 微信小程序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.其他地方直接使用静态变量就可以了。

更多:

微信小程序获取二维码接口整理,.Net Core后台获取小程序二维码

微信小程序获取二维码接口整理,前台获取二维码

微信小程序image图片实现高度自适应

猜你喜欢

转载自my.oschina.net/tianma3798/blog/1811350