AccessToken即访问凭证,业务服务器每次主动调用企业号接口时需要带上AccessToken参数。
注:主动调用是指业务服务器调用企业号接口的操作过程,如通讯录管理、应用管理。
文档:http://qydev.weixin.qq.com/wiki/index.php?title=主动调用
AccessToken需要用CorpID和Secret来换取,不同的Secret会返回不同的AccessToken。
请求地址:https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=id&corpsecret=secrect
参数说明:
参数 | 说明 |
CorpID | 企业Id |
CorpSecret | 权限管理组的凭证密钥 |
首先得创建一个权限管理组才能获取到Secret。
创建步骤:微信企业号控制台 → 设置 → 权限管理组 → 新建管理组
注意事项: 这里有个【应用权限】的设置,在后面进行OAuth2.0验证时跳转的域名必须跟包含应用的【可信域名】一致。
正常情况下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
|
///
/// 微信企业号操作
///
public
class
WXQYHHelper
{
private
WXQYHHelper() { }
static
string
CORPID;
static
string
SECRET;
///
/// .Ctor
///
static
WXQYHHelper()
{
CORPID = ConfigurationManager.AppSettings[
"CorpID"
];
SECRET = ConfigurationManager.AppSettings[
"Secret"
];
}
///
/// ACCESS_TOKEN最后一次更新时间
///
static
DateTime _lastGetTimeOfAccessToken = DateTime.Now.AddSeconds(-7201);
///
/// 存储微信访问凭证
///
static
string
_AccessToken;
///
/// 获取微信访问凭证
///
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;
}
}
}
|
来源:http://www.cnblogs.com/polk6/p/6213725.html