access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token。获取的access_token过期时间为2小时。获取access token具体说明请参考官方文档。

我们不能因为每个业务要用到access_token的时候,都去微信服务器去请求获取新的access_token,所以我们要把获取到的access_token进行保存。

解决问题的大体思路如下:

我们将获取到的access_token码,和调用微信接口时的时间保存到数据库,或者记录到xml中,每次要用到access_token的时候,先判断下是否过去,如果过期则请求微信服务器获取新的access_token,并且更新掉原有的access_token。

Code:

        #region 获取AccessToken
/// <summary>
/// 获取AccessToken:access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token。
/// </summary>
/// <param name="appid">第三方用户唯一凭证</param>
/// <param name="secret">第三方用户唯一凭证密钥,即appsecret</param>
/// <returns></returns>
public static string GetAccessToken(string appid, string secret)
{
//string AccessToken=string.Empty;
//if(CheckAccessToken(ref AccessToken))
// return AccessToken; //微信提供的access_token获取的HttpGet请求地址
string url = string.Format("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}",appid,secret);
var httpClient = new HttpClient();
var result = httpClient.GetAsync(url).Result;
if (!result.IsSuccessStatusCode)//请求是否成功
return string.Empty; var content = result.Content.ReadAsStringAsync().Result;
var model = Newtonsoft.Json.JsonConvert.DeserializeObject<AccessTokenModel>(content); return model.access_token;
} /// <summary>
/// 获取AccessToken:access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token。
/// </summary>
/// <returns></returns>
public static string GetAccessToken()
{
string appid = string.Empty;//从数据库中读取:第三方用户唯一凭证。后台加盐保存到数据库
string secret = string.Empty;//从数据库中读取:第三方用户唯一凭证密钥,即appsecret。后台加盐保存到数据库
return "";
} /// <summary>
/// 判断AccessToken是否过期 false过期
/// </summary>
/// <returns></returns>
private static bool CheckAccessToken(ref string AccessToken)
{
string oAccessToken = string.Empty;//读取数据库中保存的AccessToken和时间,判断是否过期,过期获取新的AccessToken
DateTime dt;//数据库获取保存的时间
//if()//判断是否过期
//{ //}
return true;
}
#endregion

公司还没给申请到测试号和域名,代码暂时只写个大概,仅供个人学习记录。

最新文章

  1. Nginx反向代理+keepalived
  2. VC++ CString类完美总结(整理)
  3. 【java基础学习】IO流
  4. webapi获取IP的方式
  5. linux问题汇总---如何生成密钥对
  6. bzoj 3039 悬线法求最大01子矩阵
  7. 查看解决Oracle对象锁住的问题
  8. Squid 日志详解
  9. Spring Boot 自动重启(spring-boot-devtools)
  10. sublime使用总结
  11. java aio nio bio
  12. Log4j扩展使用--日志格式化器Layout
  13. QT-第一个程序 Hello QT , 以及QT creator介绍
  14. get/post比较
  15. Python爬虫——西刺
  16. Spring Boot 2 (四):使用 Docker 部署 Spring Boot
  17. JAVA基础知识总结:十五
  18. SpringBoot开发项目,引入JPA找不到findOne方法
  19. 实现Ecshop注册页面手机号唯一的验证
  20. 两步实现在Git Bash中用Sublime打开文件

热门文章

  1. HDU Train Problem I (STL_栈)
  2. Accessibility辅助控制类
  3. 根据数据库表结构生成java类
  4. IE input X 去掉文本框的叉叉和password输入框的眼睛图标
  5. keras安装及使用
  6. nyoj--301--递推求值(经典矩阵运算)
  7. vim编辑器常用语法
  8. SqlServer存储过程加密与解密
  9. iReport5.6.0使用说明
  10. 初识Git(一)