Foxtable(狐表)用户栏目专家坐堂 → 关于网页授权


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

主题:关于网页授权

帅哥哟,离线,有人找我吗?
客家阿哥
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:821 积分:5932 威望:0 精华:0 注册:2012/10/24 15:01:00
  发帖心情 Post By:2018/4/21 11:11:00 [只看该作者]

Functions.Execute("rrzz",e)
这个是是网页授权认证的,


Functions.Execute("kaipiaoyuyuetianjia",e)
这个是要访问的网页


希望访问kaipiaoyuyuetianjia.htm,用函数rrzz先授权认证一下

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


加好友 发短信
等级:超级版主 帖子:106067 积分:539428 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/4/21 11:22:00 [只看该作者]

里面分别是什么代码?

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


加好友 发短信
等级:四尾狐 帖子:821 积分:5932 威望:0 精华:0 注册:2012/10/24 15:01:00
  发帖心情 Post By:2018/4/21 13:17:00 [只看该作者]

rrzz代码


Dim e As RequestEventArgs = args(0)
Dim sb As New StringBuilder
sb.AppendLine("<meta name='viewport' c>")
If e.host = "www.whtcxx.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,"wxc919804411b0d36c","8157869b6771df1efec88b1f01726b8c",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 dr As DataRow = DataTables("WXUsers").Find("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)
        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=wxc919804411b0d36c&redirect_uri=http%3a%2f%2www.whtcxx.com&response_type=code&scope=snsapi_userinfo&state=123#wechat_redirect"
            sb.Append("<meta http-equiv='Refresh' c>") '跳转到授权链接
            e.WriteString(sb.ToString)
            Return ""
        End If
    End If
    'If  OpenID > "" And UserName > "" Then
        ''这里可以做进一步的权限判断
        'sb.AppendLine("欢迎" & UserName & "光临, <a href='http://wexin.foxtable.com'>刷新页面</a>")
    'Else
        'sb.AppendLine("你无权访问本系统")
    'End If
End If
e.WriteString(sb.ToString)

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


加好友 发短信
等级:四尾狐 帖子:821 积分:5932 威望:0 精华:0 注册:2012/10/24 15:01:00
  发帖心情 Post By:2018/4/21 13:20:00 [只看该作者]

kaipiaoyuyuetianjia代码

-------------------------------------


Dim e As RequestEventArgs = args(0)
Dim wb As New  weui
wb.InsertHTML("<img width='100%' src='images/home.jpg'/>")
If e.PostValues.Count = 0 Then
    wb.AddForm("","form1","kaipiaoyuyuetianjia.htm")
    With wb.AddInputGroup("form1","ipg4","fa piao类型及领取方式")
        .AddSelect("fa piao类型","<label style='font-size:18px'>fa piao类型&nbsp;:&nbsp;</label>","|普通fa piao|增值税专用fa piao")
        .AddSelect("领取方式","<label style='font-size:18px'>领取方式&nbsp;:&nbsp;</label>","|酒店前台自取|到付邮寄")
    End With
    With wb.AddInputGroup("form1","ipg3","开piao内容")
        .AddInput("公司名称","<label style='font-size:18px'>公司名称&nbsp;:&nbsp;</label>","text")
        .AddInput("纳税人识别号","<label style='font-size:18px'>纳税人识别号&nbsp;:&nbsp;</label>","text")
        .AddInput("fa piao抬头","<label style='font-size:18px'>fa piao抬头&nbsp;:&nbsp;</label>","text")
        .AddInput("房间号","<label style='font-size:18px'>房间号&nbsp;:&nbsp;</label>","text")
        .AddInput("入住时间","<label style='font-size:18px'>入住时间&nbsp;:&nbsp;</label>","Date")
        .AddInput("离店时间","<label style='font-size:18px'>离店时间&nbsp;:&nbsp;</label>","Date")
        .AddInput("姓名","<label style='font-size:18px'>姓名&nbsp;:&nbsp;</label>","text")
        .AddInput("电话","<label style='font-size:18px'>电话&nbsp;:&nbsp;</label>","number")
        .AddInput("备注","<label style='font-size:18px'>备注&nbsp;:&nbsp;</label>","text")
        
    End With

    With wb.AddInputGroup("form1","ipg5","开piao二维码图片上传")
        '
        With .AddUploader("up128","开piao信息二维码",True)
            .AllowDelete = True '允许删除
            .Incremental = True '允许 重复选择文件或连续拍照
            .ScaleWidth = 400
            
        End With
    End With
    
    With wb.AddButtonGroup("form1","btg6",True)
        .Add("btn1", "确定", "button").Attribute= "" '调用js函数上传
    End With
    wb.AddToast("","tst1", "正在上传",1)
    wb.AddToast("","tst2", "上传成功",0)
    wb.AddToast("","tst3", "上传失败",0).Icon= "warn"
    wb.AppendHTML("<script src='./lib/ajaxform.js'></script>") '引入脚本文件
    
    wb.InsertHTML("</br><img width='100%' src=' images/kefu.jpg  '/>")
    e.WriteString(wb.Build)
Else

    Dim  nms() As  String =  {"fa piao类型","公司名称","纳税人识别号","fa piao抬头","房间号","入住时间","离店时间","姓名","电话","领取方式"}   '不能为空的列名数组
    For Each nm As String In nms
        If e.PostValues.ContainsKey(nm) = False Then '生成错误提示页
            With wb.AddMsgPage("","msgpage","增加失败", nm & "列不能为空!")
                .icon = "Warn" '改变图标
                .AddButton("btn1","返回").Attribute = ""
            End With
            
            e.WriteString(wb.Build)
            Return ""'必须返回
        End If
    Next
    nms = New String() {"fa piao类型","公司名称","纳税人识别号","fa piao抬头","房间号","入住时间","离店时间","姓名","电话","领取方式","备注","开piao信息二维码"}  '重新定义了nms数组,增加了两列.
    Dim dr  As DataRow = DataTables("酒店开fa piao预登记").AddNew()   
    For Each nm As String In nms
        If e.PostValues.ContainsKey(nm) Then
            dr(nm) = e.PostValues(nm)
        End If
    Next
        dr("UserName") = e.Cookies("username") '从cookie获取用户名和openid
        'MessageBox.Show(e.Cookies("openid"))
        dr("OpenID") = e.Cookies("openid")
        dr("登记时间") = Today
        dr("预约号码") =dr("_Identify") 
    Dim t As TimeSpan
    t = CDate(dr("离店时间")) - CDate(dr("入住时间"))        
        If t.TotalDays = 0 Then
        dr("合计天数") = 1
        Else
        dr("合计天数") = t.TotalDays
        End If

    dr("酒店名称") = e.Cookies("jdmc")
    dr("地区") = "五华县"
    
    For Each key As String In e.Files.Keys
        If e.Files(key).Count - 1 < 0 Then
            
        Else
            For Each fln As String In e.Files(key)
                Dim NewName As String = fln
                Dim idx As Integer = fln.LastIndexOf(".")
                Dim cnt As Integer = 1
                Do While FileSys.FileExists("d:\web\uploadfiles\" & NewName) '判断文件夹是否存在同名文件
                    NewName = fln.Insert(idx,""& cnt &"") '如果存在同名文件,在原文件名加上序号
                    cnt = cnt + 1 '递增序号
                Loop
                e.SaveFile(key,fln,"d:\web\uploadfiles\" & NewName) '保存接收到的文件
                Dim lst As List(of String) =  dr.Lines("开piao信息二维码")  '获取文件集合
                lst.Add(Filesys.GetName(NewName))  '给集合增加一个文件
                dr.Lines("开piao信息二维码") = lst  '将新的集合赋值给文件列               
            Next
        End If        
    Next    
    e.WriteString("OK")    
    dr.save()
    e.WriteString(wb.Build)
End  If

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


加好友 发短信
等级:超级版主 帖子:106067 积分:539428 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/4/21 15:51:00 [只看该作者]

rrzz代码

最后一行e.WriteString(sb.ToString)改为:
return "OK"

httprequest代码
……
Select Case e.Path
    Case "kaipiaoyuyuetianjia.htm"
        If Functions.Execute("rrzz",e) = "OK" Then
            Functions.Execute("kaipiaoyuyuetianjia",e)
        End If
    End  Select

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


加好友 发短信
等级:四尾狐 帖子:821 积分:5932 威望:0 精华:0 注册:2012/10/24 15:01:00
  发帖心情 Post By:2018/4/21 15:52:00 [只看该作者]

Dim e As RequestEventArgs = args(0)
Dim wb As New  weui
wb.InsertHTML("<img width='100%' src='images/home.jpg'/>")
If e.PostValues.Count = 0 Then
    wb.AddForm("","form1","kaipiaoyuyuetianjia.htm")
    With wb.AddInputGroup("form1","ipg4","fa piao类型及领取方式")
        .AddSelect("fa piao类型","<label style='font-size:18px'>fa piao类型&nbsp;:&nbsp;</label>","|普通fa piao|增值税专用fa piao")
        .AddSelect("领取方式","<label style='font-size:18px'>领取方式&nbsp;:&nbsp;</label>","|酒店前台自取|到付邮寄")
    End With
    With wb.AddInputGroup("form1","ipg3","开piao内容")
        .AddInput("公司名称","<label style='font-size:18px'>公司名称&nbsp;:&nbsp;</label>","text")
        .AddInput("纳税人识别号","<label style='font-size:18px'>纳税人识别号&nbsp;:&nbsp;</label>","text")
        .AddInput("fa piao抬头","<label style='font-size:18px'>fa piao抬头&nbsp;:&nbsp;</label>","text")
        .AddInput("房间号","<label style='font-size:18px'>房间号&nbsp;:&nbsp;</label>","text")
        .AddInput("入住时间","<label style='font-size:18px'>入住时间&nbsp;:&nbsp;</label>","Date")
        .AddInput("离店时间","<label style='font-size:18px'>离店时间&nbsp;:&nbsp;</label>","Date")
        .AddInput("姓名","<label style='font-size:18px'>姓名&nbsp;:&nbsp;</label>","text")
        .AddInput("电话","<label style='font-size:18px'>电话&nbsp;:&nbsp;</label>","number")
        .AddInput("备注","<label style='font-size:18px'>备注&nbsp;:&nbsp;</label>","text")
        
    End With

    With wb.AddInputGroup("form1","ipg5","开piao二维码图片上传")
        '
        With .AddUploader("up128","开piao信息二维码",True)
            .AllowDelete = True '允许删除
            .Incremental = True '允许 重复选择文件或连续拍照
            .ScaleWidth = 400
            
        End With
    End With
    
    With wb.AddButtonGroup("form1","btg6",True)
        .Add("btn1", "确定", "button").Attribute= "" '调用js函数上传
    End With
    wb.AddToast("","tst1", "正在上传",1)
    wb.AddToast("","tst2", "上传成功",0)
    wb.AddToast("","tst3", "上传失败",0).Icon= "warn"
    wb.AppendHTML("<script src='./lib/ajaxform.js'></script>") '引入脚本文件
    
    wb.InsertHTML("</br><img width='100%' src=' images/kefu.jpg  '/>")
    e.WriteString(wb.Build)

MessageBox.Show("22") '我在这里加了提示,加了rrzz函数认证网页授权,一样有提示,但kaipiaoyuyuetianjia.htm页面是空白的,如果去掉网页授权认证,也一样有提示,但是kaipiaoyuyuetianjia.htm显示正常

Else

    Dim  nms() As  String =  {"fa piao类型","公司名称","纳税人识别号","fa piao抬头","房间号","入住时间","离店时间","姓名","电话","领取方式"}   '不能为空的列名数组
    For Each nm As String In nms
        If e.PostValues.ContainsKey(nm) = False Then '生成错误提示页
            With wb.AddMsgPage("","msgpage","增加失败", nm & "列不能为空!")
                .icon = "Warn" '改变图标
                .AddButton("btn1","返回").Attribute = ""
            End With
            
            e.WriteString(wb.Build)
            Return ""'必须返回
        End If
    Next
    nms = New String() {"fa piao类型","公司名称","纳税人识别号","fa piao抬头","房间号","入住时间","离店时间","姓名","电话","领取方式","备注","开piao信息二维码"}  '重新定义了nms数组,增加了两列.
    Dim dr  As DataRow = DataTables("酒店开fa piao预登记").AddNew()   
    For Each nm As String In nms
        If e.PostValues.ContainsKey(nm) Then
            dr(nm) = e.PostValues(nm)
        End If
    Next
        dr("UserName") = e.Cookies("username") '从cookie获取用户名和openid
        'MessageBox.Show(e.Cookies("openid"))
        dr("OpenID") = e.Cookies("openid")
        dr("登记时间") = Today
        dr("预约号码") =dr("_Identify") 
    Dim t As TimeSpan
    t = CDate(dr("离店时间")) - CDate(dr("入住时间"))        
        If t.TotalDays = 0 Then
        dr("合计天数") = 1
        Else
        dr("合计天数") = t.TotalDays
        End If

    dr("酒店名称") = e.Cookies("jdmc")
    dr("地区") = "五华县"
    
    For Each key As String In e.Files.Keys
        If e.Files(key).Count - 1 < 0 Then
            
        Else
            For Each fln As String In e.Files(key)
                Dim NewName As String = fln
                Dim idx As Integer = fln.LastIndexOf(".")
                Dim cnt As Integer = 1
                Do While FileSys.FileExists("d:\web\uploadfiles\" & NewName) '判断文件夹是否存在同名文件
                    NewName = fln.Insert(idx,""& cnt &"") '如果存在同名文件,在原文件名加上序号
                    cnt = cnt + 1 '递增序号
                Loop
                e.SaveFile(key,fln,"d:\web\uploadfiles\" & NewName) '保存接收到的文件
                Dim lst As List(of String) =  dr.Lines("开piao信息二维码")  '获取文件集合
                lst.Add(Filesys.GetName(NewName))  '给集合增加一个文件
                dr.Lines("开piao信息二维码") = lst  '将新的集合赋值给文件列               
            Next
        End If        
    Next    
    e.WriteString("OK")    
    dr.save()
    e.WriteString(wb.Build)
End  If


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


加好友 发短信
等级:超级版主 帖子:106067 积分:539428 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/4/21 16:27:00 [只看该作者]

按15楼的方式改了没有

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


加好友 发短信
等级:四尾狐 帖子:821 积分:5932 威望:0 精华:0 注册:2012/10/24 15:01:00
  发帖心情 Post By:2018/4/21 17:33:00 [只看该作者]

改了,但没有网页授权函数没有返回“OK”
[此贴子已经被作者于2018/4/21 17:33:04编辑过]

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


加好友 发短信
等级:四尾狐 帖子:821 积分:5932 威望:0 精华:0 注册:2012/10/24 15:01:00
  发帖心情 Post By:2018/4/21 17:53:00 [只看该作者]

反复测试,觉得应该是网页授权函数的以下代码有问题

        If userName = "" OrElse OpenID = "" Then

            Dim ul As String  = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxc919804411b0d36c&redirect_uri=http%3a%2f%2fwww.whtcxx.com&response_type=code&scope=snsapi_userinfo&state=123#wechat_redirect"
            sb.Append("<meta http-equiv='Refresh' c>") '跳转到授权链接                                
            e.WriteString(sb.ToString)
            Return ""
        End If
这段代码执行后,return回来的是否就是
http://www.whtcxx.com/?code=021M7iBX1DDOuU0M6XAX1PmXAX1M7iBt&state=123

但微信页面显示空白,觉得授权链接跳转后,这段代码没有执行

Dim e As RequestEventArgs = args(0)
Dim sb As New StringBuilder
sb.AppendLine("<meta name='viewport' c>")
If e.host = "www.whtcxx.com" Then '授权测试
    Dim UserName As String
    Dim OpenID As String
    If e.GetValues.ContainsKey("code") Then '如果是通过授权链接跳转而来,就从链接重提取code来获取openid

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


加好友 发短信
等级:四尾狐 帖子:821 积分:5932 威望:0 精华:0 注册:2012/10/24 15:01:00
  发帖心情 Post By:2018/4/22 7:45:00 [只看该作者]

手工顶起来,望老师解答,折腾了一个星期了。

 回到顶部
总数 30 上一页 1 2 3 下一页