Foxtable(狐表)用户栏目专家坐堂 → 麻烦老师看看哪里有错


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

主题:麻烦老师看看哪里有错

帅哥哟,离线,有人找我吗?
sky-18
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:655 积分:5004 威望:0 精华:0 注册:2011/11/26 17:46:00
麻烦老师看看哪里有错  发帖心情 Post By:2019/7/1 20:24:00 [只看该作者]

学用企业微信做网页授权。代码如下

Dim e As RequestEventArgs = args(0)
Dim UserId As String
Dim UserName As String
Dim sb As New StringBuilder
sb.AppendLine("<meta name='viewport' c>")
If e.GetValues.ContainsKey("code") Then '如果通过授权链接跳转而来,就根据传递过来的code参数调用接口,获取用户的UserId
    Dim ul As String  = "https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token={0}&code={1}"
    ul = CExp(ul,Functions.Execute("GetQYAccessToken"),e.GetValues("code"))
    MessageBox.Show("获取微信accesstoken:" & Functions.Execute("GetQYAccessToken"))
    Dim hc As new HttpClient(ul)
    Dim jo As JObject = JObject.Parse(hc.GetData)
    If jo("UserId") IsNot Nothing Then
        UserId = jo("UserId")
    End If
Else
    UserId = e.Cookies("userid") '否则从cookie中提取userid和username
    MessageBox.Show("没有code,userid:" & e.Cookies("userid"))
End If
Dim Verified As Boolean
Dim dr As DataRow = DataTables("微信用户表").Find("userid ='" & UserId & "'") '根据openid找出对应的行
If UserId  > "" AndAlso dr IsNot Nothing AndAlso dr("permit") = True '授权成功
    MessageBox.Show("授权成功!")
    Verified  = True
    UserName = dr("name")
    e.AppendCookie("userid",UserId) '将userid和username存储在Cookie中
ElseIf e.GetValues.ContainsKey("code") = False Then '如果授权失败,且不是通过授权链接跳转而来,那么就跳转到授权链接
    MessageBox.Show("进入授权链接.")
    Dim ul As String = "https://open.weixin.qq.com/connect/oauth2/authorize?appid={0}&redirect_uri={1}&response_type=code&scope=snsapi_base&state=123#wechat_redirect"
    Dim ul2 As String = UrlEncode("https://yxdwxoxrk.fredcfengye.com/wxentrance")
    ul = CExp(ul,"ww78ccca7608362047",ul2)
    MessageBox.Show(ul)
    sb.Append("<meta http-equiv='Refresh' c>") '跳转到授权链接
    e.WriteString(sb.ToString)
    Return Nothing
End If
If Verified = False Then
    sb.AppendLine("你无权访问本系统")
Else
    sb.AppendLine("欢迎" & UserName & " , <a href='https://yxdwxoxrk.fredcfengye.com/wxentrance'>刷新页面</a>")
End If
e.WriteString(sb.ToString)

代码是复制说明里面的,自己修改了一下参数。
但是运行不成功。
于是用messagebox来查错。发现通过授权网页跳转后的getvalues里面仍然没有 “code”.百思不得其解,,希望老师指正。感激不尽
[此贴子已经被作者于2019/7/1 20:25:29编辑过]

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


加好友 发短信
等级:三尾狐 帖子:655 积分:5004 威望:0 精华:0 注册:2011/11/26 17:46:00
  发帖心情 Post By:2019/7/1 20:24:00 [只看该作者]

这是一个函数,,我把相关代码写到自定义函数里了。


 回到顶部
帅哥哟,离线,有人找我吗?
sky-18
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:655 积分:5004 威望:0 精华:0 注册:2011/11/26 17:46:00
  发帖心情 Post By:2019/7/1 20:27:00 [只看该作者]

好奇怪,,第5行的代码显示不完整。。应该是:sb.AppendLine("<meta name='viewport' c>")


 回到顶部
帅哥哟,离线,有人找我吗?
sky-18
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:655 积分:5004 威望:0 精华:0 注册:2011/11/26 17:46:00
  发帖心情 Post By:2019/7/1 20:28:00 [只看该作者]

还是显示不完整

 回到顶部
帅哥,在线噢!
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110802 积分:563948 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/7/1 20:37:00 [只看该作者]

httprequest代码贴出来看看。

"微信用户表"有这个userid的用户吗,permit为true吗?

 回到顶部
帅哥哟,离线,有人找我吗?
sky-18
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:655 积分:5004 威望:0 精华:0 注册:2011/11/26 17:46:00
  发帖心情 Post By:2019/7/1 20:43:00 [只看该作者]

Select Case e.path
        Case "wefox"  '企业微信验证程序
            Functions.Execute("cb",e)
        Case "st.htm"  '搜图
            Functions.Execute("st",e)
    End Select
    
    If e.Host = "yxdwxoxrk.fredcfengye.com" Then
        Functions.Execute("wxentrance",e)
    End If 

这是httprequest

"微信用户表"确定有这个userid的,permit也是true

但是在企业微信里面 “申请校验域名” 没有通过。是不是跟这个有关?



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


加好友 发短信
等级:三尾狐 帖子:655 积分:5004 威望:0 精华:0 注册:2011/11/26 17:46:00
  发帖心情 Post By:2019/7/1 20:45:00 [只看该作者]

校验域名  的问题解决了,,规格重新填了,也通过了

 回到顶部
帅哥哟,离线,有人找我吗?
sky-18
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:655 积分:5004 威望:0 精华:0 注册:2011/11/26 17:46:00
  发帖心情 Post By:2019/7/1 21:05:00 [只看该作者]

又测试了几遍,貌似进入微信的授权后还是没有通过get方式发送code过来。
微信的 域名校验 也是通过了的

 回到顶部
帅哥,在线噢!
有点蓝
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110802 积分:563948 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/7/1 21:06:00 [只看该作者]

1、可信域名添加了没有?https://work.weixin.qq.com/api/doc#10028/关于网页授权的可信域名

2、GetQYAccessToken函数里的Secret 改为打开页面的应用的Secret 了没有?能否获取AccessToken?

3、能否获取到useid?


If e.GetValues.ContainsKey("code") Then '如果通过授权链接跳转而来,就根据传递过来的code参数调用接口,获取用户的UserId
    Dim ul As String  = "https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token={0}&code={1}"
    ul = CExp(ul,Functions.Execute("GetQYAccessToken"),e.GetValues("code"))
    MessageBox.Show("获取微信accesstoken:" & Functions.Execute("GetQYAccessToken"))
    Dim hc As new HttpClient(ul)
dim str as string = hc.GetData
msgbox(str) '这里返回什么内容?
    Dim jo As JObject = JObject.Parse(str)
    If jo("UserId") IsNot Nothing Then
        UserId = jo("UserId")
    End If
Else
    UserId = e.Cookies("userid") '否则从cookie中提取userid和username
    MessageBox.Show("没有code,userid:" & e.Cookies("userid"))
End If

 回到顶部
帅哥哟,离线,有人找我吗?
sky-18
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:655 积分:5004 威望:0 精华:0 注册:2011/11/26 17:46:00
  发帖心情 Post By:2019/7/1 21:27:00 [只看该作者]

1.可信域名没有问题,微信的可信域名校验已经通过。
2.accesstoken 也没有问题,可以正确的获取。
3.老师在代码里面加的那个根本就运行不到,,应为从微信的授权网页转过来的地址里面的getvalue里面就没有code这个key..所以代码运行不到这里呀。。。

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