以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 变量值,前面有值,后面为空 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=127044) |
||||
-- 作者:zhangjian222200 -- 发布时间:2018/11/3 20:23:00 -- 变量值,前面有值,后面为空 如题: Case "456.htm" \'网页简单授权 Dim wangzhi As String \'定义,网址 For Each key As String In e.GetValues.Keys \'接受获取openid成功后,转向的网页地址 If key = "yemian" Then \'网址页面 wangzhi = e.GetValues(key) msgbox("想要进入的网址=" & wangzhi) ’这里能够正确获得变量wangzhi的值 End If Next 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,"这里暂时删除","这里暂时删除",e.GetValues("code")) \'这是填写自己的appid|appsecret Dim hc As new HttpClient(ul) Dim jo As JObject = JObject.Parse(hc.GetData) If jo("openid") IsNot Nothing Then OpenID = jo("openid") wb.AppendCookie("openid",OpenID,31680) \'22天 End If Else OpenId = e.Cookies("openid") \'否则从cookie中提取openid End If If 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.123.com/456.htm") ul1 = CExp(ul1,"这里暂时删除",ul2,"123") sb.Append("<meta http-equiv=\'Refresh\' c>") \'跳转到授权链接 e.WriteString(sb.ToString) Return End If If e.GetValues.ContainsKey("code") = False Then sb.AppendLine("获取openid失败") Else msgbox("网址合成前=" & wangzhi) ’这里获得变量wangzhi的值为空 wangzhi = wangzhi & ".htm" msgbox("网址合成后=" & wangzhi) ’这里获得变量wangzhi的值为空 w b.Insert HTML("<meta http -equiv=\'Re fresh\' con tent=\'0; u rl=/" & wangzhi & "\'>") \'因为wangzhi =“”这里不能跳转网页 e.WriteString(wb.Build) \'生成网页 Return End If e.WriteString(sb.ToString) Return [此贴子已经被作者于2018/11/14 9:38:39编辑过]
|
||||
-- 作者:有点甜 -- 发布时间:2018/11/4 21:07:00 -- 1、你可以把参数保存在cookie里面;
2、获取失败后,会跳转到这里授权
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.123.com/456.htm")
改成对应要跳转的地址(包含参数)
|
||||
-- 作者:zhangjian222200 -- 发布时间:2018/11/14 9:37:00 -- 回楼上,1楼不是网址授权问题 是前面正确获得值wangzhi,中间没有再次赋值,后面wangzhi值为空(见1楼描述)
[此贴子已经被作者于2018/11/14 9:36:44编辑过]
|
||||
-- 作者:有点甜 -- 发布时间:2018/11/14 9:42:00 -- 认认真真看
1、你可以把参数保存在cookie里面;
2、获取失败后,会跳转到这里授权
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.123.com/456.htm")
改成对应要跳转的地址(包含参数) |
||||
-- 作者:zhangjian222200 -- 发布时间:2018/11/23 20:07:00 -- httprequest,2个页面代码: Case "details.htm" ’ 设计思路:进入这个页面,如果没有获得openid,需要先授权,然后再进入details.htm If e.Cookies.ContainsKey("openid") Then Functions.Execute("details",e) Return Else wb.InsertHTML("<meta http-equiv=\'Refresh\' c>") \'直接跳转到网页授权页面,获取openid后,将再次进入per_xianx_yj.htm页面 e.WriteString(wb.Build) \'生成网页 End If Case "wangyeshouquan.htm" \'网页简单授权页面 Dim wangzhi As String \'定义,网址 For Each key As String In e.GetValues.Keys \'接受获取openid成功后,转向的网页地址 If key = "yemian" Then \'网址页面 wangzhi = e.GetValues(key) msgbox("想要进入的网址=" & wangzhi) \'比如之前想要进入details.htm页面,但是进入这里,wangzhi的值是上面传递的:details,不为空 End If Next 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,"正常值","正常值",e.GetValues("code")) \'这是填写自己的appid|appsecret Dim hc As new HttpClient(ul) Dim jo As JObject = JObject.Parse(hc.GetData) If jo("openid") IsNot Nothing Then OpenID = jo("openid") wb.AppendCookie("openid",OpenID,31680) \'22天 \'e.AppendCookie("openid",OpenID) \'将openid存储在Cookie中 End If Else OpenId = e.Cookies("openid") \'否则从cookie中提取openid End If If 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.zm2hd.com/wangyeshouquan.htm") ’这里授权失败要加上参数是code和state?但是这里e.GetValues.ContainsKey("code") = False,没有code参数啊 ul1 = CExp(ul1,"wxaa640e55d6f95bdd",ul2,"123") sb.Append("<meta http-equiv=\'Refresh\' c>") \'跳转到授权链接 e.WriteString(sb.ToString) Return End If \'msgbox("OpenId=" & OpenId) If e.GetValues.ContainsKey("code") = False Then sb.AppendLine("获取openid失败") Else msgbox("网址合成前=" & wangzhi) ’这里执行了,说明授权已经成功,前一个粉色msgbox处,提示wangzhi不为空,但是这里提示wangzhi=空,导致下面sb.Append无法合成网址 wangzhi = wangzhi & ".htm" sb.Append("<meta http-equiv=\'Refresh\' c>") \'直接跳转到网页授权页面,获取openid后,将再次进入per_xianx_yj.htm页面 e.WriteString(sb.ToString) Return End If e.WriteString(sb.ToString) Return 因为有的代码被屏蔽,完整代码如下:
截图: [此贴子已经被作者于2018/11/23 20:33:21编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2018/11/23 20:48:00 -- Dim ul2 As String = UrlEncode("http://www.zm2hd.com/wangyeshouquan.htm") ’这里授权失败要加上参数是code和state?但是这里e.GetValues.ContainsKey("code") = False,没有code参数啊 谁告诉你这里要加上【code和state】的?!!,这2个参数是微信授权成功后自动加上的。麻烦先去看看微信的开发文档 这里改为:Dim ul2 As String = UrlEncode("http://www.zm2hd.com/wangyeshouquan.htm?yemian=details") 请认真看看2楼说明的第2点
|
||||
-- 作者:zhangjian222200 -- 发布时间:2018/11/23 21:06:00 -- msgbox("想要进入的网址=" & wangzhi) ***** msgbox("想要进入的网址2=" & wangzhi) Dim ul2 As String = UrlEncode("http://www.zm2hd.com/wangyeshouquan.htm?yemian=details") ’这行上面加上msgbox,这2个不断交替弹出,进入死循环了,没有进入details页面[此贴子已经被作者于2018/11/23 21:08:14编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2018/11/23 21:13:00 -- If e.GetValues.ContainsKey("code") = False Then 改为 If OpenId = "" Then
|
||||
-- 作者:zhangjian222200 -- 发布时间:2018/11/23 22:11:00 -- 看懂了,解决了,谢谢 |