微信企业号 获取AccessToken
目录
2. 示例代码
1. AccessToken介绍
1.1 什么是AccessToken
AccessToken即访问凭证,业务服务器每次主动调用企业号接口时需要带上AccessToken参数。
注:主动调用是指业务服务器调用企业号接口的操作过程,如通讯录管理、应用管理。
文档:http://qydev.weixin.qq.com/wiki/index.php?title=主动调用
1.2 获取AccessToken
AccessToken需要用CorpID和Secret来换取,不同的Secret会返回不同的AccessToken。
请求地址:https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=id&corpsecret=secrect
参数说明:
| 参数 | 说明 |
| CorpID | 企业Id |
| CorpSecret | 权限管理组的凭证密钥 |
1.3 获取CorpID和Secret
首先得创建一个权限管理组才能获取到Secret。
创建步骤:微信企业号控制台 → 设置 → 权限管理组 → 新建管理组

注意事项: 这里有个【应用权限】的设置,在后面进行OAuth2.0验证时跳转的域名必须跟包含应用的【可信域名】一致。
2. 示例代码
正常情况下AccessToken有效期为7200秒,有效期内重复获取返回相同结果。所以创建代码时,要存储有效期内的AccessToken。
以C#代码展示为例:
/// <summary>
/// 微信企业号操作
/// </summary>
public class WXQYHHelper
{
private WXQYHHelper() { } static string CORPID;
static string SECRET; /// <summary>
/// .Ctor
/// </summary>
static WXQYHHelper()
{
CORPID = ConfigurationManager.AppSettings["CorpID"];
SECRET = ConfigurationManager.AppSettings["Secret"];
} /// <summary>
/// ACCESS_TOKEN最后一次更新时间
/// </summary>
static DateTime _lastGetTimeOfAccessToken = DateTime.Now.AddSeconds(-7201); /// <summary>
/// 存储微信访问凭证
/// </summary>
static string _AccessToken; /// <summary>
/// 获取微信访问凭证
/// </summary>
public static string GetAccessToken()
{
try
{
if (_lastGetTimeOfAccessToken < DateTime.Now)
{ string url = string.Format("https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={0}&corpsecret={1}", CORPID, SECRET);
string responseText = HttpHelper.Instance.get(url); // 封装的get请求
/*
API:http://qydev.weixin.qq.com/wiki/index.php?title=%E4%B8%BB%E5%8A%A8%E8%B0%83%E7%94%A8#.E8.8E.B7.E5.8F.96AccessToken
正确的Json返回示例:
{
"access_token": "accesstoken000001",
"expires_in": 7200
}
错误的Json返回示例:
{
"errcode": 43003,
"errmsg": "require https"
}
*/
var rsEntity = new { access_token = "", expires_in = 0, errcode = 0, errmsg = "" };
dynamic en = Newtonsoft.Json.JsonConvert.DeserializeAnonymousType<object>(responseText, rsEntity); // Newtonsoft.Json提供的匿名类反序列化
_lastGetTimeOfAccessToken = DateTime.Now.AddSeconds((double)en.expires_in - 1);
_AccessToken = en.access_token;
}
return _AccessToken;
}
catch (Exception ex)
{
throw ex;
}
}
}
微信企业号 获取AccessToken的更多相关文章
- 微信开发 获取AccessToken
获取AccessToken的方法 public static Access_token GetAccessToken() { string formatString = String.Format(& ...
- 微信企业号获取OpenID过程
define('CorpID', "wx82e2c31215d9a5a7"); define('CorpSecret', ""); //当前管理组 设置-> ...
- 使用delphi+intraweb进行微信开发5—准备实现微信API,先从获取AccessToken开始
在前4讲中我们已经使iw开发的应用成功和微信进行了对接,再接下来的章节中我们开始逐一尝试和实现微信的各个API,开始前先来点准备工作 首先需要明确的是,微信的API都是通过https调用实现的,分为p ...
- 微信企业号开发之-如何获取secret 序列号
最近有项目基于微信企业号开发,简单记录下如何查看企业号secert 工具/原料 微信企业号 方法/步骤 用管理员的帐号登录后,选择[设置]-[权限管理]进入管理组设置界面 在左边点击[ ...
- 微信开发第2章 通过appid appsecret获取accesstoken
通过 appid appsecret是可以获取accesstoken的 ,请不要一直获取,不然会把token的机会浪费掉,获取到后7200秒后失效,建议保存为6000秒到7000秒左右,具体可以查看微 ...
- ASP.NET微信公众号获取AccessToken
access_token是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token.开发者需要进行妥善保存.access_token的存储至少要保留512个字符空间.acces ...
- 微信全局获取并缓存Accesstoken的值
由于本项目中使用自定义菜单接口.获取用户信息接口.用户分组接口.消息发送接口等,都需要传入一个相同的参数access_token,其有效期 是7200秒(两小时),在有效期内可以使用,一旦access ...
- SpringTask定时任务实例讲解【Java获取微信公众平台accessToken及jsapiTicket】
项目中调用微信公众平台的接口时,因为获取到的accessToken及jsapiTicket有效时长只有两个小时,需要不断更新. 所以做了个定时任务,记录一下. .SpringTask实现有两种方式,一 ...
- asp.net mvc 5 微信接入VB版 - 获取AccessToken
获取AccessToken是微信接入的又一个基础操作.很多微信接口需要这个2小时一刷新的AccessToken作为参数. 转载请说明作者Nukepayload2 首先根据开发文档把获取AccessTo ...
随机推荐
- 自定义基于 VLC 的视频播放器
前言(蛋疼的背景故事) 前段时间,接了一个小项目,有个需求是要在系统待机一段时间以后,循环播放 MV(类似于 Windows 系统的屏幕保护). 听到这个需求,我首先想到的是 MediaPlayer ...
- 【.net 深呼吸】设置序列化中的最大数据量
欢迎收看本期的<老周吹牛>节目,由于剧组严重缺钱,故本节目无视频无声音.好,先看下面一个类声明. [DataContract] public class DemoObject { [Dat ...
- Java8实战分享
虽然很多人已经使用了JDK8,看到不少代码,貌似大家对于Java语言or SDK的使用看起来还是停留在7甚至6. Java8在流式 or 链式处理,并发 or 并行方面增强了很多,函数式的风格使代码可 ...
- SQL Server-聚焦UNIOL ALL/UNION查询(二十三)
前言 本节我们来看看有关查询中UNION和UNION ALL的问题,简短的内容,深入的理解,Always to review the basics. 初探UNION和UNION ALL 首先我们过一遍 ...
- C#委托异步调用
参考页面: http://www.yuanjiaocheng.net/webapi/mvc-consume-webapi-get.html http://www.yuanjiaocheng.net/w ...
- bzoj3207--Hash+主席树
题目大意: 给定一个n个数的序列和m个询问(n,m<=100000)和k,每个询问包含k+2个数字:l,r,b[1],b[2]...b[k],要求输出b[1]~b[k]在[l,r]中是否出现. ...
- spider RPC入门指南
本部分将介绍使用spider RPC开发分布式应用的客户端和服务端. spider RPC中间件基于J2SE 8开发,因此需要确保服务器上安装了JDK 8及以上版本,不依赖于任何额外需要独立安装和配置 ...
- Three.JS 从世界坐标系转换到屏幕坐标系
var projector = new THREE.Projector(); var world_vector = new THREE.Vector3(0,0,1); var vector = pro ...
- Linux模块编程框架
Linux是单内核系统,可通用计算平台的外围设备是频繁变化的,不可能将所有的(包括将来即将出现的)设备的驱动程序都一次性编译进内核,为了解决这个问题,Linux提出了可加载内核模块(Loadable ...
- Storm介绍(一)
作者:Jack47 PS:如果喜欢我写的文章,欢迎关注我的微信公众账号程序员杰克,两边的文章会同步,也可以添加我的RSS订阅源. 内容简介 本文是Storm系列之一,介绍了Storm的起源,Storm ...