获取AccessToken
企业微信通过
CorpID和应用的Secret获取AccessToken。
CorpID是企业微信的标识,每个企业微信拥有一个唯一的CorpID;Secret是指定应用的凭证密钥,不同的应用有不同的
Secret。也就是说AccessToken是针对具体应用的,并不是整个企业微信所有应用都一样。
我们可以定义一个自定义函数,名为GetQYAccessToken,用于获取企业微信的AccessToken,代码参考:
Static
CreateTime As
Date '记录最近一次生成access_token的时间
Static
AccessTocken As
String
'记录最近一次生成的access_token
Dim
CorpID As
String=
"ww7deed3af842576ed" '企业微信的CorpID
Dim
Secret As
String =
"sO7RjwoisX82kB_gcRY4isEU8ZC6sJVcGs6CDlz8Nkc"
'管理组的Secret
Dim
tp As
TimeSpan = Date.Now
- CreateTime
If
tp.TotalSeconds
> 3600 Then
Dim url
As String =
"https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={0}&corpsecret={1}"
Dim hc
As New
HttpClient(CExp(url,
CorpID, Secret))
Dim ret
As String =
hc.GetData()
If ret =
"" Then
'如果失败,再尝试一次
hc.GetData()
End If
CreateTime =
Date.Now()
Dim jo
As JObject =
JObject.Parse(ret)
If jo("access_token")
IsNot Nothing
Then
AccessTocken
= jo("access_token")
Else
MessageBox.show("获取access_token失败,原因:"
& vbcrlf
& jo.ToString)
End If
End
If
Return
AccessTocken
企业微信的AccessToken在有效期内重复获取,返回的值是一样的,所以企业微信并不需要设置中控服务器。
管理多个应用的AccessToken
如果需要管理多个应用的AccessToken,可以按照下面方式改改自定义函数。
首先在全局代码定义一个字典对象
public _dictAccessToken
as new Dictionary(of String, object())
然后定义一个自定义函数,名为GetQYAccessTokenBySecret,代码参考:
最后调用的时候,需要传入CorpID和应用的Secret,代码参考:
Dim
access_token As
String = Functions.Execute("GetQYAccessTokenBySecret","ww7deed3af842576ed","sO7RjwoisX82kB_gcRY4isEU8ZC6sJVcGs6CDlz8Nkc")
Output.Show(access_token)