微信企业号开发:获取AccessToken
2015-07-21 09:47
696 查看
微信企业号开发,需要调用微信企业号的相关接口,则必须使用AccessToken,但AccessToken需要corpid,corpsecret两个参数调用相关接口才能获取。
而且每一个接口都有一定的次数限制,当然获取AccessToken的接口也有这个限制。每一个AccessToken的有效期为7200秒,也就是两个小时,在有效期内调用接口,则自动续期。因此建议在获取到AccessToken后,保存在在某一个地方,等到快过期时在重新获取。其实AccessToken有点类似于web程序中的session,这个有效期7200秒相当于session的有效期,调用接口,则自动续期,就相当于web程序中用户登陆后,和服务端有交互,session的有效期自然延长了。
核心代码AccessTokenInfo类:public class AccessTokenInfo
{
/// <summary>
/// access_token
/// </summary>
public string access_token { get; set; }
/// <summary>
/// 凭证有效时间,单位:秒
/// </summary>
public long expires_in { get; set; }
/// <summary>
/// 获取时间
/// </summary>
public DateTime GetTime { get; set; }
}
BLLAccessToken类 /// <summary>
/// 获取企业登陆access_token
/// </summary>
public static class BLLAccessToken
{
static AccessTokenInfo TokenInfo = null;
public static string GetAccessToken()
{
string AccessToken = "";
DateTime now=DateTime.Now;
if (TokenInfo == null) //首次获取
{
TokenInfo = UpDateAccessToken();
}
else
{
if (TokenInfo.GetTime.AddSeconds(TokenInfo.expires_in - 30) < now) //提前30秒重新获取
{
TokenInfo = UpDateAccessToken();
}
}
AccessToken = TokenInfo.access_token;
return AccessToken;
}
private static AccessTokenInfo UpDateAccessToken()
{
string CorpId = AppIdInfo.GetCorpId();//corpid
string Secret = AppIdInfo.GetSecret(); //corpsecret
AccessTokenInfo info = new AccessTokenInfo();
WebUtils ut = new WebUtils();
/// https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=wxb7f1db8fd6aa9d68&corpsecret=aoxZ7D5-SgLRUbKY2fwQykW36RqxoIdNIn1pIiGy9iSdXgMHwQCzUsniQVAsBCTt string urlFormat = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={0}&corpsecret={1}";
var url = string.Format(urlFormat, CorpId, Secret);
string temp = ut.DoGet(url);
try
{
AccessTokenInfo tempAccessTokenjson = Tools.JsonStringToObj<AccessTokenInfo>(temp);
info.access_token = tempAccessTokenjson.access_token;
info.expires_in = tempAccessTokenjson.expires_in;
info.GetTime = DateTime.Now;
}
catch(Exception ex)
{
LogInfo.Error("获取AccessToken异常", ex);
}
return info;
}
}
微信企业号开发:常用的参数
微信企业号开发:corpsecret到底在哪块呢?
获取AccessToken官方文档
而且每一个接口都有一定的次数限制,当然获取AccessToken的接口也有这个限制。每一个AccessToken的有效期为7200秒,也就是两个小时,在有效期内调用接口,则自动续期。因此建议在获取到AccessToken后,保存在在某一个地方,等到快过期时在重新获取。其实AccessToken有点类似于web程序中的session,这个有效期7200秒相当于session的有效期,调用接口,则自动续期,就相当于web程序中用户登陆后,和服务端有交互,session的有效期自然延长了。
核心代码AccessTokenInfo类:public class AccessTokenInfo
{
/// <summary>
/// access_token
/// </summary>
public string access_token { get; set; }
/// <summary>
/// 凭证有效时间,单位:秒
/// </summary>
public long expires_in { get; set; }
/// <summary>
/// 获取时间
/// </summary>
public DateTime GetTime { get; set; }
}
BLLAccessToken类 /// <summary>
/// 获取企业登陆access_token
/// </summary>
public static class BLLAccessToken
{
static AccessTokenInfo TokenInfo = null;
public static string GetAccessToken()
{
string AccessToken = "";
DateTime now=DateTime.Now;
if (TokenInfo == null) //首次获取
{
TokenInfo = UpDateAccessToken();
}
else
{
if (TokenInfo.GetTime.AddSeconds(TokenInfo.expires_in - 30) < now) //提前30秒重新获取
{
TokenInfo = UpDateAccessToken();
}
}
AccessToken = TokenInfo.access_token;
return AccessToken;
}
private static AccessTokenInfo UpDateAccessToken()
{
string CorpId = AppIdInfo.GetCorpId();//corpid
string Secret = AppIdInfo.GetSecret(); //corpsecret
AccessTokenInfo info = new AccessTokenInfo();
WebUtils ut = new WebUtils();
/// https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=wxb7f1db8fd6aa9d68&corpsecret=aoxZ7D5-SgLRUbKY2fwQykW36RqxoIdNIn1pIiGy9iSdXgMHwQCzUsniQVAsBCTt string urlFormat = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={0}&corpsecret={1}";
var url = string.Format(urlFormat, CorpId, Secret);
string temp = ut.DoGet(url);
try
{
AccessTokenInfo tempAccessTokenjson = Tools.JsonStringToObj<AccessTokenInfo>(temp);
info.access_token = tempAccessTokenjson.access_token;
info.expires_in = tempAccessTokenjson.expires_in;
info.GetTime = DateTime.Now;
}
catch(Exception ex)
{
LogInfo.Error("获取AccessToken异常", ex);
}
return info;
}
}
微信企业号开发:常用的参数
微信企业号开发:corpsecret到底在哪块呢?
获取AccessToken官方文档
相关文章推荐
- 微信支付开发-预支付id为空或者签名错误
- 微信支付-扫码支付备忘
- 微信开发——下载附件
- [荐]微信公众号营销推广系统,中小企业微信公众平台开发商佳选
- 微信公众平台开发:多客服
- django搭建微信后台——获取用户信息(7.20)
- 网页微信登录原理
- Andriod图片选择器(单选-头像,多选-朋友圈上传):library+sample
- 应用集成UMeng,分享二维码到微信朋友和朋友圈
- 检测微信用户是否已经关注此公共平台
- 关于微信支付报错
- 按键精灵2014微信群内给好友轮流发私信
- 可穿戴设备(CC2541)上微信(8)
- 使用GTK编写的hello world小程序
- django搭建微信公众号后台——自动回复(7.20)
- 利用SSH反向通道在本地调试微信公共号
- 如何方便地调试微信JS-SDK
- C#/ASP.NET MVC微信公众号接口开发之从零开发(三)回复消息 (附源码)
- 微信开发中文字交互项目详解
- php下基于百度BAE的微信SDK框架