CorpID和Secret 作为参数传入,改为使用字典存储AccessTocken
全局代码定义一个字典对象
public dict as new Dictionary(of String, object())
函数试试改为
Dim CorpID As String= args(0) '企业号的CorpID
Dim Secret As String = args(1) '管理组的Secret
Dim CreateTime As Date = Date.Today.AddDays(-1)
If dict.ContainsKey(Secret)
CreateTime = dict(Secret)(0)
End If
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
If dict.ContainsKey(CorpID)
dict(Secret)(0) = CreateTime
dict(Secret)(1) = jo("access_token")
Else
dict.Add(Secret,new object() {CreateTime ,jo("access_token")})
End If
Else
MessageBox.show("获取access_token失败,原因:" & vbcrlf & jo.ToString)
End If
End If
Return dict(Secret)(1)
调用
Dim access_token As String = Functions.Execute("GetAccessToken","ww7deed3af842576ed","sO7RjwoisX82kB_gcRY4isEU8ZC6sJVcGs6CDlz8Nkc")
Output.Show(access_token)
[此贴子已经被作者于2020/9/10 14:37:43编辑过]