Foxtable(狐表)用户栏目专家坐堂 → [求助]如何从中控服务获取access_token


  共有2414人关注过本帖树形打印复制链接

主题:[求助]如何从中控服务获取access_token

帅哥哟,离线,有人找我吗?
智友软件工作室
  1楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:912 积分:7445 威望:0 精华:0 注册:2013/2/25 13:10:00
[求助]如何从中控服务获取access_token  发帖心情 Post By:2019/3/20 11:18:00 [只看该作者]

Dim ac As WeChat.AccessToken = WeChat.WeChatAccessTokenController.GetNewAccessToken(1,_appid,_AppSecret)

If ac.Success Then

    Output.Show(ac.access_token)

End If

用这样的方式获取的access_token每次都是刷新一个新的
请问可以用什么办法获取未过期的access_token
我是用“使用UDP服务端做中控服务”方法做的中控服务

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/3/20 11:22:00 [只看该作者]


 回到顶部
帅哥哟,离线,有人找我吗?
智友软件工作室
  3楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:912 积分:7445 威望:0 精华:0 注册:2013/2/25 13:10:00
  发帖心情 Post By:2019/3/20 12:33:00 [只看该作者]

没看懂,现在就想获取一个不过去的凭证,不想每次都刷新,您能给写一下吗?

 回到顶部
帅哥哟,离线,有人找我吗?
智友软件工作室
  4楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:912 积分:7445 威望:0 精华:0 注册:2013/2/25 13:10:00
  发帖心情 Post By:2019/3/20 12:34:00 [只看该作者]

没看懂,现在就想获取一个不过去的凭证,不想每次都刷新,您能给写一下吗?

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/3/20 12:45:00 [只看该作者]


 回到顶部
帅哥哟,离线,有人找我吗?
智友软件工作室
  6楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:912 积分:7445 威望:0 精华:0 注册:2013/2/25 13:10:00
  发帖心情 Post By:2019/3/20 15:44:00 [只看该作者]

哥哥,叫您一声亲哥,从昨晚到现在都没折腾明白,你就直接指点一下吧。
'给用户推送信息
Dim id As String = Tables("微信工单").Current("openid")
Dim txt As String
txt = txt & Tables("微信工单").Current("nickname") & "你好:" & vbcrlf
txt = txt & "您的工单状态已变更为等待调度,正在给您分配工程师" & vbcrlf
txt = txt & "敬请关注" & vbcrlf
Dim text As String = "{""touser"":""" & id & """,""msgtype"":""text"",""text"":{""content"":""" & txt & """}}"
Dim wechatServ As WeChat.WeChatPublicNo = WeChat.WeChatServer.Server(_AppId)
Dim weRet = wechatServ.SendMsgController.SendMessage(text)
If weRet.Success Then
    MessageBox.Show("已给用户发送状态变更消息!")
Else
    MessageBox.Show("给用户发送的状态变更消息失败!" & weRet.ErrorMessage)
End If
用上面的方法客户端是可以成功给指定openid发送消息的,就说明这个过程调取的access_token是成功的,我现在想要单独获取到这个access_token
Dim url As String = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token={0}"
Dim
hc As New HttpClient(CExp(url, Functions.Execute("GetAccessToken")))
Dim
jo As New JObject
Dim
ja As New JArray
jo
("touser") = "ofjtFwBSZ5cNqTKLSKx2TNEAxfBI"
jo
("template_id") = "WPpt3ki1Haq-ERpQvWXAgT7IZbfO07mbKtjnRt1Kiek" '模板ID
jo
("url") = "http://www.foxtable.com"
jo
("data") = New JObject()
jo
("data")("name") = New JObject()
jo
("data")("name")("value") = "Foxtable"
jo
("data")("name")("color") = "#173177"
jo
("data")("number") = New JObject()
jo
("data")("number")("value") = "2"
jo
("data")("number")("color") = "#173177"
jo
("data")("expDate") = New JObject()
jo
("data")("expDate")("value") = "20191227"
jo
("data")("expDate")("color") = "#173177"
jo
("data")("expDate") = New JObject()
jo
("data")("expDate")("value") = "20191227"
jo
("data")("expDate")("color") = "#173177"
jo
("data")("remark") = New JObject()
jo
("data")("remark")("value") = "如有疑问,可联系客服QQ:800014337"
jo
("data")("remark")("color") = "#173177"
hc
.content = jo.Tostring()
jo
= JObject.Parse(hc.getdata)
If
jo("errcode") = "0" Then
    MessageBox.show("模版消息发送成功!")
Else
    Messagebox.Show(jo.ToString)
End If
我现在想用上面的办法发送模板消息,因为上面的方法看的明白(不会用WeChat.MPSendTemplate),这里面是通过自定义函数GetAccessToken用于获取access_token,我现在中控服务器是使用UDP服务端做中控服务,我想请教您在这种情况我我想得到access_token这个字符串该怎么弄。

帮助已经看了好多遍了,水平确实有限,脑子都浆糊了
[此贴子已经被作者于2019/3/20 15:45:15编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/3/20 15:48:00 [只看该作者]


 回到顶部
帅哥哟,离线,有人找我吗?
智友软件工作室
  8楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:912 积分:7445 威望:0 精华:0 注册:2013/2/25 13:10:00
  发帖心情 Post By:2019/3/20 16:31:00 [只看该作者]

Dim hc As New HttpClient("http://" & _zhongkongip) 
hc.  C & "测试"
MessageBox.Show(hc.GetData)

是这样吗?显示空值
[此贴子已经被作者于2019/3/20 16:31:50编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/3/20 17:07:00 [只看该作者]

方法一:做一个自己的函数,需要的时候调用

 

Static CreateTime As Date '记录最近一次生成access_token的时间
Static AccessTocken As String '记录最近一次生成的access_token
Dim AppId As String= "wx8acdb7df5beb68fd" '开发者ID
Dim AppSecret As String = "a5a3b06a790d4200a151e6b13c3dc263" '开发者密匙
Dim tp As TimeSpan = Date.Now - CreateTime
Dim url As String = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}"
If tp.TotalSeconds > 3600 Then
    Dim hc As New HttpClient(CExp(url,AppId,AppSecret))
    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("errcode") Is Nothing Then
        AccessTocken = jo("access_token")
    Else
        MessageBox.show("获取access_token失败,原因:" & vbcrlf & jo("errmsg").ToString)
    End If
End If
Return AccessTocken

 

方法二:

 

你可以用 Dim ac As WeChat.AccessToken = WeChat.WeChatAccessTokenController.GetNewAccessToken(1,_appid,_AppSecret)

 

简化你方法1的代码


 回到顶部
帅哥哟,离线,有人找我吗?
智友软件工作室
  10楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:912 积分:7445 威望:0 精华:0 注册:2013/2/25 13:10:00
  发帖心情 Post By:2019/3/20 19:31:00 [只看该作者]

你可以用 Dim ac As WeChat.AccessToken = WeChat.WeChatAccessTokenController.GetNewAccessToken(1,_appid,_AppSecret)

 

简化你方法1的代码


这种方法我一开始就知道了,测试是成功的,但是这种方法的缺陷就是每次都是生成一个新的,会耗用次数,现在想客户端如何从中控端获取


中控端是按照下面这样设置的


If e.Message.StartsWith("бTokenGetб"Then

    Dim msg As String = e.Message.Replace("бTokenGetб","")

    Dim atoken = WeChat.WeChatAccessTokenController.GetServiceAccessToken(msg) '调用接口库获取最新access_toke

    If atoken.CheckError() Then

        Functions.Execute("LogText",atoken.ErrorMessage)

    Else

        e.ReturnValue = Functions.Execute("Msg_GetReturnValue",atoken.ToJson())

    End If

End If

[此贴子已经被作者于2019/3/20 20:07:53编辑过]

 回到顶部
总数 11 1 2 下一页