access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token。正常情况下access_token有效期为7200秒(两个小时),微信获取access_token接口每日限制调用2000次。

(一)access_token的作用

  access_token由公众号的AppID和AppSecret组成,所以具有识别公众号的作用。

(二)access_token的特点

  access_token存储至少要保留512个字符空间。access_token的有效期目前为2个小时,重复获取将导致上次获取的access_token失效。

(三)access_token的存储调用策略

  access_token在后期应用开发中应采取的策略,如图所示,将access_token存储到中控服务器,所有需要用到该参数的程序都应访问中控服务器获取access_token,中控服务器判断当前access_token是否有效并刷新即可。

(四)接口调用请求说明

http请求方式: GET
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

(五)获取access_token

 /// <summary>
/// GET方式请求URL,并返回AccessTokenResult类
/// </summary>
public static AccessTokenResult GetJson<AccessTokenResult>(string url)
{
string returnText = HttpGet(url); JavaScriptSerializer js = new JavaScriptSerializer(); AccessTokenResult result = js.Deserialize<AccessTokenResult>(returnText); return result;
}
 /// <summary>
/// 获取凭证接口
/// </summary>
private static AccessTokenResult GetToken(string appid, string secret, string grant_type = "client_credential")
{
var url = string.Format("https://api.weixin.qq.com/cgi-bin/token?grant_type={0}&appid={1}&secret={2}", grant_type, appid, secret); return HttpService.GetJson<AccessTokenResult>(url);
}
 //token缓存键值对
private static Dictionary<string, ComponentAccessTokenResult> tokenCache = new Dictionary<string, ComponentAccessTokenResult>(); /// <summary>
/// 获取缓存令牌
/// </summary>
public static string GetAccessToken(string appid, string secret)
{
//token缓存
ComponentAccessTokenResult result = null;
11  //判断缓存是否存在键:appid,就将缓存中的token赋给result
if (tokenCache.ContainsKey(appid))
{
14   result = tokenCache[appid];
}
//不存在则获取token
if (result == null)
{
19   AccessTokenResult token = GetToken(appid, secret); result = new ComponentAccessTokenResult() {
23       //access_token
      component_access_token = token.access_token,
      //生成access_token的时间
      dt = System.DateTime.Now,
    };
tokenCache.Add(appid, result);
}
  //判断是否在有效期内,过期重新获取token
else if (System.DateTime.Compare(result.dt.AddSeconds(), System.DateTime.Now) < )
{
33   AccessTokenResult token = GetToken(appid, secret);
result.component_access_token = token.access_token;
result.dt = System.DateTime.Now;
tokenCache[appid] = result;
}
return result.component_access_token;
}

最新文章

  1. 2014 UESTC暑前集训搜索专题解题报告
  2. 使用命令行设置svn忽略列表
  3. 关于Android与pc通信时中文乱码的分析和解决
  4. cocos2d-x 扩充引擎基类功能 引起的头文件重复包含问题的分析
  5. 导入excel 数据到mysql出现的时间格式
  6. oracle递归函数
  7. Python学习(三) 输出任意格式的字符串以及字符串的切片
  8. 浏览器间bug
  9. virtualBox使用nat模式下ssh连接
  10. java关于map用来筛选的用法
  11. dynamics 365 AI 解决方案 —— 微软布局
  12. 新概念英语(1-31)Where&#39;s Sally?
  13. Vagrant将下载好的镜像装载到本地中
  14. 学习笔记TF046:TensoFlow开发环境,Mac、Ubuntu/Linux、Windows,CPU版本、GPU版本
  15. PythonStudy1——Python 值拷贝 浅拷贝 深拷贝
  16. java 线程池 使用实例
  17. 【emWin】例程二十一:窗口对象——Edit
  18. 火币网API文档——WebSocket API错误码
  19. [LeetCode] 747. Largest Number At Least Twice of Others_Easy
  20. C++项目第五次作业之文件的读取

热门文章

  1. 关于loading
  2. Zabbix系列之三——部署JMX监控tomcat
  3. 【适合公司业务】全网最详细的IDEA里如何正确新建【普通或者Maven】的Java web项目并发布到Tomcat上运行成功【博主强烈推荐】(类似eclipse里同一个workspace下【多个子项目】并存)(图文详解)
  4. Python程序每日一练习
  5. Hibernate学习(三)———— 一对多映射关系
  6. 整合Spring和SpringMVC
  7. HTML5 audio元素如何使用js与jquery控制其事件
  8. [Luogu 3787] 冰精冻西瓜
  9. Hyperledger Fabric密码模块系列之BCCSP(五) - 国密算法实现
  10. 【手记】解决涉及office的程序报“Unable to cast COM object of type System._ComObject...”的问题