以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 取OPENID的问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=104992) |
-- 作者:bobolan521 -- 发布时间:2017/8/9 20:14:00 -- 取OPENID的问题 请老师帮忙看一下哪里出错了,取不到OPENID Select Case e.Path Case "hello.htm" Dim OpenID As String OpenID = Functions.Execute("验证函数",e,"hello.htm") If OpenID > "" Then e.WriteString(OpenID & "aa" & e.Cookies("OpenID")) End If End Select 验证函数 Dim e As RequestEventArgs = Args(0) Dim url As String = args(1) Dim wb As New weui Dim OpenID As String Dim sb As New StringBuilder sb.AppendLine("<meta name=\'viewport\' c>") If e.GetValues.ContainsKey("code") Then \'如果通过授权链接跳转而来,就根据传递过来的code参数调用接口,获取用户的OpenID Dim ul As String = "https://api.weixin.qq.com/sns/oauth2/access_token?appid={0}&secret={1}&code={2}&grant_type=authorization_code" ul = CExp(ul,"wxa7154bceddec","85b7910fd7fce8cc289e8bd162bd",e.GetValues("code")) Dim hc As new HttpClient(ul) Dim jo As JObject = JObject.Parse(hc.GetData) If jo("openid") IsNot Nothing Then OpenID = jo("openid") e.AppendCookie("openid",OpenID) \'将openid存储在Cookie中 End If Else OpenId = e.Cookies("openid") \'否则从cookie中提取openid End If Dim Verified As Boolean Dim dr As DataRow = DataTables("WXUsers").Find("openid =\'" & OpenID & "\'") \'根据openid找出对应的行 If OpenId > "" AndAlso dr IsNot Nothing AndAlso dr("permit") = True \'授权成功 Verified = True ElseIf e.GetValues.ContainsKey("code") = False Then \'如果授权失败,且不是通过授权链接跳转而来,那么就跳转到授权链接 Dim ul1 As String = "https://open.weixin.qq.com/connect/oauth2/authorize?appid={0}&redirect_uri={1}&response_type=code&scope=snsapi_base&state={2}#wechat_redirect" Dim ul2 As String = UrlEncode("http://www.greatlan.xyz/" & url) ul1 = CExp(ul1,"wx8acdb7df5beb68fd",ul2,"123") sb.Append("<meta http-equiv=\'Refresh\' c>") \'跳转到授权链接 e.WriteString(sb.ToString) Return "" End If [此贴子已经被作者于2017/8/9 23:22:55编辑过]
|
-- 作者:有点甜 -- 发布时间:2017/8/9 21:31:00 -- 1、你并没有把openid返回,你函数return的都是空值,你要写
return OpenId 才行。
2、你要访问的应该是这样地址
https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect 而不是直接访问 hello.htm 这个地址。 |
-- 作者:bobolan521 -- 发布时间:2017/8/9 23:23:00 -- 只能正常执行一下 [此贴子已经被作者于2017/8/9 23:35:37编辑过]
|
-- 作者:bobolan521 -- 发布时间:2017/8/9 23:35:00 -- 老师我上面那小段是httprequest里的代码 ,验证函数是一个内部函数,我是希望每一个页面运行时先去判断先去取OPENid,刚试了一下,按照老师给的提示,只能获取一次,第二次还是报错
|
-- 作者:有点甜 -- 发布时间:2017/8/10 9:45:00 -- 以下是引用bobolan521在2017/8/9 23:35:00的发言:
老师我上面那小段是httprequest里的代码 ,验证函数是一个内部函数,我是希望每一个页面运行时先去判断先去取OPENid,刚试了一下,按照老师给的提示,只能获取一次,第二次还是报错
1、报错提示什么?
2、你代码怎么写的?
3、加入msgbox,看弹出到哪里后报错。 |
-- 作者:bobolan521 -- 发布时间:2017/8/11 10:45:00 -- 谢谢老师,已经解决了 |