以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  获取企业access_token出错  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=123543)

--  作者:133198609
--  发布时间:2018/8/17 11:30:00
--  获取企业access_token出错

图片点击可在新窗口打开查看此主题相关图片如下:图片1.png
图片点击可在新窗口打开查看

报错获取企业access_token失败,代码基本都是按帮助的来的,请指点一下哪些地方可能出错

--  作者:有点蓝
--  发布时间:2018/8/17 11:38:00
--  
结果是成功的。

判断方法有问题吧,贴出来看看


--  作者:133198609
--  发布时间:2018/8/17 11:42:00
--  

[此贴子已经被作者于2018/8/17 11:54:35编辑过]

--  作者:有点蓝
--  发布时间:2018/8/17 11:45:00
--  
GetQYAccessToken函数呀,和上面的代码没有关系
--  作者:133198609
--  发布时间:2018/8/17 11:51:00
--  
这个就是复制了帮助的,就是这个两个红色的我改成自己的了。
Static CreateTime As Date \'记录最近一次生成access_token的时间
Static AccessTocken As String \'记录最近一次生成的access_token
Dim CorpID As String=  "xw8bbc1c6c7bd8a2e7" \'企业号的CorpID
Dim Secret As String = "xx_8nTXApeZ-pofx6ECmoEbpjDhj2SKNUe5yXtr_xos" \'管理组的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

--  作者:有点蓝
--  发布时间:2018/8/17 11:55:00
--  
这个判断不应该有问题呀,测试看看

MessageBox.show(jo("access_token")
MessageBox.show(jo("access_token") IsNot Nothing

或者这样判断

If jo("errcode")  = 0 Then
        AccessTocken = jo("access_token")
    Else
        MessageBox.show("获取access_token失败,原因:" & vbcrlf & jo.ToString)
    End If

--  作者:133198609
--  发布时间:2018/8/17 12:03:00
--  
改成:

    If jo("errcode")  isnot nothing Then
        AccessTocken = jo("access_token")
    Else
        MessageBox.show("获取access_token失败,原因:" & vbcrlf & jo.ToString)
    End If

可以了