Foxtable(狐表)用户栏目专家坐堂 → 取OPENID的问题


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

主题:取OPENID的问题

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


加好友 发短信
等级:三尾狐 帖子:629 积分:7191 威望:0 精华:1 注册:2013/11/26 7:49:00
取OPENID的问题  发帖心情 Post By:2017/8/9 20:14:00 [只看该作者]

请老师帮忙看一下哪里出错了,取不到OPENID

Select Case e.Path
    Case "hello.htm"
        Dim OpenID As String
           OpenID = Functions.Execute("验证函数",e,"hello.htm")
        If OpenID > "" Then
            e.WriteString(OpenID & "aa" & e.Cookies("OpenID"))
        End If

End Select


验证函数
Dim e As RequestEventArgs = Args(0)
Dim url As String = args(1)
Dim wb As New weui
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,"wxa7154bceddec","85b7910fd7fce8cc289e8bd162bd",e.GetValues("code"))
    Dim hc As new HttpClient(ul)
    Dim jo As JObject = JObject.Parse(hc.GetData)
    If jo("openid") IsNot Nothing Then
        OpenID = jo("openid")
        e.AppendCookie("openid",OpenID) '将openid存储在Cookie中
    End If
Else
    OpenId =  e.Cookies("openid") '否则从cookie中提取openid
End If
Dim Verified As Boolean
Dim dr As DataRow = DataTables("WXUsers").Find("openid  ='" & OpenID & "'") '根据openid找出对应的行
If OpenId > "" AndAlso dr IsNot Nothing AndAlso dr("permit") = True '授权成功
    Verified  = True
ElseIf 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.greatlan.xyz/" & url)
    ul1 = CExp(ul1,"wx8acdb7df5beb68fd",ul2,"123")

    sb.Append("<meta http-equiv='Refresh' c>") '跳转到授权链接
    e.WriteString(sb.ToString)
    Return ""
End If
[此贴子已经被作者于2017/8/9 23:22:55编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/8/9 21:31:00 [只看该作者]

1、你并没有把openid返回,你函数return的都是空值,你要写

 

return OpenId  才行。

 

2、你要访问的应该是这样地址

 

https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect

而不是直接访问 hello.htm 这个地址。


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


加好友 发短信
等级:三尾狐 帖子:629 积分:7191 威望:0 精华:1 注册:2013/11/26 7:49:00
  发帖心情 Post By:2017/8/9 23:23:00 [只看该作者]

只能正常执行一下
[此贴子已经被作者于2017/8/9 23:35:37编辑过]

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


加好友 发短信
等级:三尾狐 帖子:629 积分:7191 威望:0 精华:1 注册:2013/11/26 7:49:00
  发帖心情 Post By:2017/8/9 23:35:00 [只看该作者]

老师我上面那小段是httprequest里的代码
,验证函数是一个内部函数,我是希望每一个页面运行时先去判断先去取OPENid,刚试了一下,按照老师给的提示,只能获取一次,第二次还是报错

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/8/10 9:45:00 [只看该作者]

以下是引用bobolan521在2017/8/9 23:35:00的发言:
老师我上面那小段是httprequest里的代码
,验证函数是一个内部函数,我是希望每一个页面运行时先去判断先去取OPENid,刚试了一下,按照老师给的提示,只能获取一次,第二次还是报错

 

1、报错提示什么?

 

2、你代码怎么写的?

 

3、加入msgbox,看弹出到哪里后报错。


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


加好友 发短信
等级:三尾狐 帖子:629 积分:7191 威望:0 精华:1 注册:2013/11/26 7:49:00
  发帖心情 Post By:2017/8/11 10:45:00 [只看该作者]

谢谢老师,已经解决了

 回到顶部