zoukankan      html  css  js  c++  java
  • C#微信公众号开发——access_token的获取

    access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token。正常情况下access_token有效期为7200秒,重复获取将导致上次获取的access_token失效。

    公众号可以使用AppID和AppSecret调用本接口来获取access_token。AppID和AppSecret可在微信公众平台官网-开发者中心页中获得(需要已经成为开发者,且帐号没有异常状态)。注意调用所有微信接口时均需使用https协议。

    获取access_token的思路是:用XML文档存放access_token信息,获取access_token的时候根据XML存放的上次生成时间判断是否过期,如果过期重新获取。

    一、新建一个XML文档,用来存放access_token和时间信息

    <?xml version="1.0" encoding="utf-8"?>
    <xml>
      <Access_Token>存放Access_Toke,新建的时候可以随便写,后面调用的时候会更新的</Access_Token>
      <Access_YouXRQ>2016/7/22 16:13:15</Access_YouXRQ>
    </xml>

    二、获取access_token,appid和secret需要输入自己微信公众号的就可以了

            /// <summary>
            /// 通过appID和appsecret获取Access_token
            /// </summary>
            /// <returns></returns>
            private static Access_token GetAccess_token()
            {
                string appid = "appid";
                string secret = "appsecret";
                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();//在这里对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;
            }

    三、由于access_token会过期,所以获取access_token的时候要验证是否过期了

            /// <summary>
            /// 获取Access_token值
            /// </summary>
            /// <returns></returns>
            public static string IsExistAccess_Token()
            {
                string Token = string.Empty;
                DateTime YouXRQ;
                // 读取XML文件中的数据,并显示出来 ,注意文件路径  
                string filepath = System.Web.HttpContext.Current.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;
            }

    四、直接调用IsExistAccess_Token()就可以获取了

    string AccessToken = IsExistAccess_Token();
  • 相关阅读:
    hdu 4710 Balls Rearrangement()
    hdu 4707 Pet(DFS水过)
    hdu 4706 Children's Day(模拟)
    hdu 4712 Hamming Distance(随机函数暴力)
    csu 1305 Substring (后缀数组)
    csu 1306 Manor(优先队列)
    csu 1312 榜单(模拟题)
    csu 1303 Decimal (数论题)
    网络爬虫
    Python处理微信利器——itchat
  • 原文地址:https://www.cnblogs.com/zhangjd/p/5694737.html
Copyright © 2011-2022 走看看