Dim sb As New StringBuilder
Dim wb As New weui
sb.AppendLine("<meta name='viewport' c>")
If e.host = "yuming.com" Then '授权测试
Dim UserName As String
Dim OpenID As String
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,"wx444444444d","44444444444444444444",e.GetValues("code"))
Dim hc As new HttpClient(ul)
Dim jo As JObject = JObject.Parse(hc.GetData)
'msgbox(jo.ToString)
If jo("openid") IsNot Nothing Then '如果获取openid成功(成功的话,还会同时返回一个accesstiken,用于获取用户详情)
OpenID = jo("openid")
Dim dr As DataRow = DataTables("WXUsers").SqlFind("openid ='" & Openid & "'")
If dr IsNot Nothing Then
UserName = dr("nickname")
Else
ul = "https://api.weixin.qq.com/sns/userinfo?access_token={0}&openid={1}&lang=zh_CN "
'根据openid和accesstoken获取用户详情,注意这里这个accesstoken不是普通accesston,只能用于网页授权
hc = New HttpClient(CExp(ul, jo("access_token"), OpenId))
jo = jo.Parse(hc.GetData)
If jo("openid") IsNot Nothing Then
UserName = jo("nickname")
dr = DataTables("WXUsers").AddNew()
Dim nms() As String = {"openid","nickname","sex","city","country","province","headimgurl"} '""
For Each nm As String In nms
dr(nm) = jo(nm)
Next
dr.Save
Else
e.WriteString(jo.ToString) '在用户浏览器显示错误信息
Return
End If
End If
'e.AppendCookie("username",UserName) '用户名和openid存储在Cookie中
'e.AppendCookie("openid",OpenID)
wb.AppendCookie("username",UserName) '用户名和openid存储在Cookie中
wb.AppendCookie("openid",OpenID)
Else
e.WriteString(jo.ToString) '在用户浏览器显示错误信息
Return
End If
Else
UserName = e.Cookies("username") '从cookie获取用户名和openid
OpenID = e.Cookies("openid")
If userName = "" OrElse OpenID = "" Then
Dim ul As String = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx833333b68fd&redirect_uri=http%3a%2f%2fyuming.com&response_type=code&scope=snsapi_userinfo&state=123#wechat_redirect"
wb.InsertHTML("<meta http-equiv='Refresh' c>") '跳转到授权链接
e.WriteString(wb.Build)
'e.WriteString(sb.ToString)
Return
End If
End If
If OpenID > "" And UserName > "" Then
'这里可以做进一步的权限判断
'msgbox(OpenID)
'msgbox(UserName)
'sb.AppendLine("欢迎" & UserName & "光临, <a href='http://wexin.foxtable.com'>刷新页面</a>")
sb.AppendLine("<meta http-equiv='Refresh' c>")
Else
sb.AppendLine("你无权访问本系统")
End If
End If
e.WriteString(sb.ToString)
Select Case e.path
Case "logon.htm" '登录页面
Functions.Execute("login",e)
Case "exit.htm" '退出登录
Functions.Execute("exit",e)
'Case "", "default.htm" '首页
Case "default.htm" '首页
Functions.Execute("default",e)
Case "list.htm"
Functions.Execute("List",e)
Case "addnew.htm"
Functions.Execute("AddNew",e)
Case "edit.htm"
Functions.Execute("Edit",e)
Case "delete.htm"
Functions.Execute("Delete",e)
Case "handle.htm"
Functions.Execute("handle",e)
Case "tongji.htm"
Functions.Execute("Statistics",e)
Case "filter.htm"
Functions.Execute("Filter",e)
Case "wefox"
If e.Request.HttpMethod.ToUpper = "GET"
If Functions.Execute("VerifySignature",e) Then
e.WriteString(e.GetValues("echostr"))
End If
End If
End Select