目录
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#代码展示为例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | /// <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; } } } |
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· [翻译] 为什么 Tracebit 用 C# 开发
· 腾讯ima接入deepseek-r1,借用别人脑子用用成真了~
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· DeepSeek崛起:程序员“饭碗”被抢,还是职业进化新起点?
· RFID实践——.NET IoT程序读取高频RFID卡/标签