Foxtable(狐表)用户栏目专家坐堂 → 用授权后跳转链接,第一进入网页cookies未生成


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

主题:用授权后跳转链接,第一进入网页cookies未生成

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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
用授权后跳转链接,第一进入网页cookies未生成  发帖心情 Post By:2018/7/13 17:04:00 [显示全部帖子]

甜老师,
直接跳转链接:http://yijiansoft.net/yhqshouye.htm
获取的cookies,用来做验证码没问题
授权跳转,cookies 第一次没有获取到,要再一次刷新,才有cookies
授权跳转链接:

https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8921022fc595bc93&redirect_uri=http%3a%2f%2fwww.yijiansoft.net&response_type=code&scope=snsapi_userinfo&state=antashandong#wechat_redirect

授权跳转代码:
            Dim AppId As String= dr("AppId")
            Dim Secret As String = dr("AppSecret")
            Dim zhangtao As String = dr("账套")
            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,appid,secret,e.GetValues("code"))
            Dim hc As new HttpClient(ul)
            Dim jo As JObject = JObject.Parse(hc.GetData)
            If jo("openid") IsNot Nothing Then '如果获取openid成功(成功的话,还会同时返回一个accesstiken,用于获取用户详情)
                OpenID = jo("openid")
                Dim drwx As DataRow = DataTables("WXUsers").sqlFind("openid ='" & Openid & "'")
                If drwx IsNot Nothing Then
                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
                        drwx = DataTables("WXUsers").sqlAddNew()
                        Dim nms() As String = {"openid","nickname","sex","city","country","province","headimgurl"} '""
                        For Each nm As String In nms
                            drwx(nm) = jo(nm)
                        Next
                        drwx("账套") = zhangtao
                        drwx("addtime") = Date.now
                        drwx.Save
                    Else
                        e.WriteString(jo.ToString) '在用户浏览器显示错误信息
                        Return ""
                    End If
                End If
                e.AppendCookie("openid",OpenID)
                e.AppendCookie("zhangtaowxzc",dr("账套"))                
sb.Append("<meta http-equiv='refresh' c o n t e n t = '0; u r l =/yhqshouye.htm'>")
'sb.Append("<meta http-equiv='refresh' c >")
                e.WriteString(sb.ToString)
            Else
                e.WriteString(jo.ToString) '在用户浏览器显示错误信息
                Return ""
            End If
        End If
[此贴子已经被作者于2018/7/13 17:07:10编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2018/7/13 17:05:00 [显示全部帖子]

甜老师,你可以用手机去访问一下链接,我有做弹出。
会发现第一次进入
授权跳转的链接,不存在  yzm 的cookies 
而直接进入的就会有存在。
[此贴子已经被作者于2018/7/13 17:15:40编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2018/7/13 17:26:00 [显示全部帖子]

甜老师,我看了,
用授权跳转的:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8921022fc595bc93&redirect_uri=http%3a%2f%2fwww.yijiansoft.net&response_type=code&scope=snsapi_userinfo&state=antashandong#wechat_redirect

cookies不会马上生效
而直接跳转的
http://yijiansoft.net/yhqshouye.htm
就可以。
授权跳转的,也是到http://yijiansoft.net/yhqshouye.htm这个页面

那要怎么处理呢。。。
[此贴子已经被作者于2018/7/13 17:31:54编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2018/7/13 18:27:00 [显示全部帖子]

注册的代码:
.AddVcodeButton("vyz","获取验证码",2).Attribute=";" '增加获取验证码按钮,2表示显示在右边

function getNum() 代码:
var result = sendAjaxText(document.getElementById("mobi").value, "faduanxin.htm","",false); 
alert(result)

faduanxin.htm代码:
发送成功后:
    e.AppendCookie("yzm", yzm)
    e.WriteString("发送完毕!如果60秒后没有收到短信请重新发送!")

照理说,e.AppendCookie("yzm", yzm)是在faduanxin.htm这个页面执行,在注册页面应该有增加cookies才对。
就像直接访问http://yijiansoft.net/yhqshouye.htm一样。
那为什么授权跳转的,就不会生效呢。。。

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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2018/7/14 9:02:00 [显示全部帖子]

甜老师,如果用vars变量
我是用js来判断验证码是否正确:

注册页面wxzhuce.htm
    wb.AddForm("","form1","").Attribut e = "onsubmi t='return valid()'" '调用函数
valid函数代码:
//获取cookie字符串 
var strCookie=document.cookie; 
//将多cookie切割为多个名/值对 
var arrCookie=strCookie.split("; "); 
var yzm; 

//遍历cookie数组,处理每个cookie对 
for(var i=0;i<arrCookie.length;i++){ 
var arr=arrCookie[i].split("="); 
alert(arr[0] + arr[1]);

//找到名称为yzm的cookie,并返回它的值 
if("yzm"==arr[0]){ 
yzm =arr[1]; 
break; 
}

alert("验证码cookies:" + yzm)

if (v3 !== yzm) {alert("验证码错误");return false}

那用vars 要怎么做呢?
[此贴子已经被作者于2018/7/14 9:05:22编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2018/7/14 9:26:00 [显示全部帖子]

老师,执行 AppendCookie 以后,要继续跳转到另一个网页,cookie才会生效的。

http://yijiansoft.net/yhqshouye.htm
这样cookie是有生效。因为在wxzhuce.htm  注册页面 通过Js执行了faduanxin.htm里的添加cookie
然后返回wxzhuce.htm

但是为什么用跳转的就不行呢。
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8921022fc595bc93&redirect_uri=http%3a%2f%2fwww.yijiansoft.net&response_type=code&scope=snsapi_userinfo&state=antashandong#wechat_redirect

wxzhuce.htm注册的代码:
.AddVcodeButton("vyz","获取验证码",2).Attribute="onclic k='getNum()';"

function getNum() 代码:
var result = sendAjaxText(document.getElementById("mobi").value, "faduanxin.htm","",false); 
alert(result)

faduanxin.htm代码:
发送成功后:
    e.AppendCookie("yzm", yzm)
    e.WriteString("发送完毕!如果60秒后没有收到短信请重新发送!")
[此贴子已经被作者于2018/7/14 9:44:50编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2018/7/14 10:22:00 [显示全部帖子]

蓝老师,发短信的页面faduanxin.htm代码:
Dim f As String = http.responseText
If f.Contains("SUCCESS") And f.Contains("0") Then
    PopMessage("发短信:" & yzm)    
    wb.AppendCookie("yzm", yzm)
    'e.WriteString("发送完毕!如果60秒后没有收到短信请重新发送!")
    e.WriteString(wb.Build) '生成网页
Else
    e.WriteString(f)
End If
是有生成cookie,如下图。

图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20180714101817.png
图片点击可在新窗口打开查看
但是js中获取cookie还是没有

function valid(){
//获取cookie字符串 
var strCookie=document.cookie; 
//将多cookie切割为多个名/值对 
var arrCookie=strCookie.split("; "); 
var yzm; 
var yzmy; 
var zhangtaowxzc1;
//遍历cookie数组,处理每个cookie对 
for(var i=0;i<arrCookie.length;i++){ 
var arr=arrCookie[i].split("="); 
alert(arr[0] + arr[1]);

//找到名称为yzm的cookie,并返回它的值 
if("yzm"==arr[0]){ 
yzm =arr[1]; 
//break; 
}

else if("zhangtaowxzc1"==arr[0]){ 
zhangtaowxzc1 =arr[1]; 
break; 

alert("验证码cookies:" + yzm)   
if (v3 !== yzm) {alert("验证码错误");return false}
}
弹出 验证码cookies:不存在的英文
       验证码错误
[此贴子已经被作者于2018/7/14 10:25:30编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2018/7/14 11:18:00 [显示全部帖子]

蓝老师,其实我不是在同一个页面
添加cookie是在faduanxin.htm页面
Dim f As String = http.responseText
If f.Contains("SUCCESS") And f.Contains("0") Then
    PopMessage("发短信:" & yzm)    
    wb.AppendCookie("yzm", yzm)
    'e.WriteString("发送完毕!如果60秒后没有收到短信请重新发送!")
    e.WriteString(wb.Build) '生成网页
Else
    e.WriteString(f)
End If
而验证的是在wxzhuce.htm页面

 回到顶部