Foxtable(狐表)用户栏目专家坐堂 → cookies 没有起效果


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

主题:cookies 没有起效果

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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
cookies 没有起效果  发帖心情 Post By:2017/10/26 18:46:00 [显示全部帖子]

老师,不知道是不是我用法不对,cookies没有添加成功
这是添加cookies,弹出的openid是有的

图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20171026184450.png
图片点击可在新窗口打开查看
这是获取cookies,弹出的没有openid

图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20171026184327.png
图片点击可在新窗口打开查看

代码如下:
添加cookies:
    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
            UserNamewx = drwx("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
                UserNamewx = jo("nickname")
                drwx = DataTables("WXUsers").AddNew()
                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
                DataTables("WXUsers").loadfilter = "Openid = ''"
                DataTables("WXUsers").load
            Else
                e.WriteString(jo.ToString) '在用户浏览器显示错误信息
                Return
            End If
        End If
        e.AppendCookie("usernamewx",UserNamewx) '用户名和openid存储在Cookie中
        e.AppendCookie("OpenID",OpenID)
        messagebox.show(Date.now & openid)
    Else
        e.WriteString(jo.ToString) '在用户浏览器显示错误信息
        Return
    End If    
End If
e.WriteString(sb.ToString)


获取cookies的代码页面:
Dim e As  RequestEventArgs = args(0)
Dim wb As New weui


If e.PostValues.Count = 0 Then
    wb.AddPageTitle("","ph1","微信关联姓名","")
    wb.AddForm("","form1","")
    With wb.AddInputGroup("form1","ipg1","请您填写基本信息")
        With .AddInput("name","姓名","text")
            .Placeholder = "您的姓名"
        End With
    End With
    With wb.AddButtonGroup("form1","btg2",True)
        .Add("zc", "注册", "submit")
    End With
Else
    Dim openid As String = e.cookies("openid")
    messagebox.show(Date.now & openid)

    Dim dr As DataRow = DataTables("WXUsers").sqlFind("openid  ='" & OpenID & "'") '根据openid找出对应的行
    If dr IsNot Nothing '
        dr("name") = e.PostValues("name")
        dr.save()
    End If

    With wb.AddMsgPage("","msgpage","关联成功", "欢迎您的加入,请关闭此页面") '生成成功提示页
    End With
    
End If
e.WriteString(wb.Build) '生成网页

[此贴子已经被作者于2017/10/26 20:13:51编辑过]

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


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

甜老师,标黄色的都正常弹出,调用的msg只有前面的时间,没有cookies

调用,标黄色的:

获取cookies的代码页面:
Dim e As  RequestEventArgs = args(0)
Dim wb As New weui

If e.PostValues.Count = 0 Then
    wb.AddPageTitle("","ph1","微信关联姓名","")
    wb.AddForm("","form1","")
    With wb.AddInputGroup("form1","ipg1","请您填写基本信息")
        With .AddInput("name","姓名","text")
            .Placeholder = "您的姓名"
        End With
    End With
    With wb.AddButtonGroup("form1","btg2",True)
        .Add("zc", "注册", "submit")
    End With
Else
    Dim openid As String = e.cookies("openid")
    messagebox.show(Date.now & openid)

    Dim dr As DataRow = DataTables("WXUsers").sqlFind("openid  ='" & OpenID & "'") '根据openid找出对应的行
    If dr IsNot Nothing '
        dr("name") = e.PostValues("name")
        dr("mobi") = e.PostValues("mobi")
        dr.save()
    End If

    With wb.AddMsgPage("","msgpage","关联成功", "欢迎您的加入,请关闭此页面") '生成成功提示页
    End With
    
End If
e.WriteString(wb.Build) '生成网页

[此贴子已经被作者于2017/10/26 20:13:13编辑过]

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


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

甜老师,我这三个依次试过去,都不行。不知道到底哪个环节出错了。

这三个我都试过,都不行。不知道是不是上面代码的问题。
        wb.AppendCookie("OpenID",OpenID)
        e.AppendCookie("OpenID",OpenID)
        e.Cookies.add("OpenID",OpenID)
        messagebox.show(Date.now & openid)
第一个弹出有openid

图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20171026210821.png
图片点击可在新窗口打开查看
第二个弹出就没有cookies了

图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20171026210838.png
图片点击可在新窗口打开查看

[此贴子已经被作者于2017/10/26 21:09:21编辑过]

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


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

我全部换成了小写,也用别人的微信打开。还是不行。

应该就是哪一个小地方没想到的地方搞错了。

但是怎么也都没有报错,也找不出来。

其他地方的cookies都可以用
[此贴子已经被作者于2017/10/26 21:25:06编辑过]

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


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

甜老师,我看了,是有都改了。
哈哈,有点崩溃的感觉。

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


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

恩恩,甜老师,我单独做了网页,还是不正常。说明添加cookies代码有问题。以下是全部代码。。。你帮我看下。看到底哪里错。。。。
If e.host = "www.soft.net" Then '
    Dim UserNamewx As String
    Dim openid As String
    
    Dim appid As String
    Dim secret As String
    Dim zhangtao As String
    
    
    If  e.GetValues.ContainsKey("code") And e.GetValues("state") = "quanzhou" Then '如果是通过授权链接跳转而来,就从链接重提取code来获取openid
        appid = "wx99..."
        secret = "d7df..."
    End If
    
    If  e.GetValues.ContainsKey("code") And e.GetValues("state") = "shandong" Then '如果是通过授权链接跳转而来,就从链接重提取code来获取openid
        appid = "wx89"
        secret = "bd8ca"
    End If
    If  e.GetValues.ContainsKey("code") And e.GetValues("state") = "sichuan" Then '如果是通过授权链接跳转而来,就从链接重提取code来获取openid
        appid = "wx005d"
        secret = "3c1b8b"
    End If
    
    If  e.GetValues.ContainsKey("code") And e.GetValues("state") = "shanxi" Then '如果是通过授权链接跳转而来,就从链接重提取code来获取openid
        appid = "wx686ef"
        secret = "07b"
    End If
    
    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
            '    UserNamewx = drwx("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
                UserNamewx = jo("nickname")
                drwx = DataTables("WXUsers").AddNew()
                Dim nms() As String = {"openid","nickname","sex","city","country","province","headimgurl"} '""
                For Each nm As String In nms
                    drwx(nm) = jo(nm)
                Next
                drwx("addtime") = Date.now
                drwx.Save
                DataTables("WXUsers").loadfilter = "openid = ''"
                DataTables("WXUsers").load
            Else
                e.WriteString(jo.ToString) '在用户浏览器显示错误信息
                Return
            End If
        End If
        '   e.AppendCookie("usernamewx",UserNamewx) '用户名和openid存储在Cookie中
        wb.AppendCookie("openid",openid)
        e.AppendCookie("openid",openid)
        e.Cookies.add("openid",openid)
        messagebox.show(Date.now & openid)
    Else
        e.WriteString(jo.ToString) '在用户浏览器显示错误信息
        Return
    End If
e.WriteString(wb.Build) '生成网页    
End If
[此贴子已经被作者于2017/10/26 22:07:52编辑过]

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


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

甜老大,这个是和微信公众号对接,只能是在微信浏览器上测试。

我有做了个简单的单独测试cookie的功能,没有问题。

就是这段代码不知道怎么回事有问题。

Case "ap.htm"
e.AppendCookie("ap","23")

Case "text.htm"
messagebox.show(e.Cookies("ap"))      

这个都可以。
[此贴子已经被作者于2017/10/26 22:58:57编辑过]

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


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

甜老师,解决了,一个小问题。哈哈,搞了大半天!
[此贴子已经被作者于2017/10/27 2:04:26编辑过]

 回到顶部