以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  微信公众平台老是提示token验证失败  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=96917)

--  作者:ycwk
--  发布时间:2017/3/2 12:37:00
--  微信公众平台老是提示token验证失败
用 ngrok.cc
之前验证成功了,由于免费的不稳定,交钱升级后,改了个域名,就再也验证不成功了,郁闷至极。
--  作者:有点蓝
--  发布时间:2017/3/2 14:13:00
--  

代码,数据库和公众号管理要同步修改

 

先改代码,数据库。再到公众号管理页面修改验证


--  作者:ycwk
--  发布时间:2017/3/2 14:54:00
--  
1首先把 服务端 的监听端口 加入: http://yc***.viphk.ngrok.org/
2然后把服务端的  httprequest  中的  case    加也加入:           yc***.viphk.ngrok.org
3再把客户端的   微信 帐号信息完善, 启动并切换至该帐号

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

这三步做了 再去微信平台改 回调url   ,依旧报token 验证失败的错误,有做掉了哪步吗?

ngrok的管理工具中报:   404 not found 

用浏览器直接访问:   http://yc***.viphk.ngrok.org/FoxTest?echostr=123456789   也是报404 not found  ,但第一次验证成功的时候不报,不知为何。
[此贴子已经被作者于2017/3/2 15:15:05编辑过]

--  作者:有点蓝
--  发布时间:2017/3/2 15:15:00
--  
域名和ip地址绑定了吗?公众号编辑中url和微信平台回调url必须完全一致,大小写和字符一个都不能漏。注意公众号编辑中url必须以“/”结尾
--  作者:有点色
--  发布时间:2017/3/2 15:16:00
--  

httprequest  加入msgbox 弹出信息。

 

在微信公众号设置的时候,看服务器弹出的值是否正确。


--  作者:ycwk
--  发布时间:2017/3/2 15:57:00
--  
监听窗口如下:
http://127.0.0.1/
http://ycy***.viphk.ngrok.org/
http://172.16.11.56/


把messagebox.show(1) 加在第一行都没有弹出提示:  但ngrok 管理工具,一直有报404 found
代码如下:


MessageBox.show(1)
try
    Select Case e.host
        \'Case "192.168.1.153","127.0.0.1"
        \' Case "172.16.11.56","127.0.0.1","47.89.44.58"
         Case "172.16.11.56","127.0.0.1","ycyysf.viphk.ngrok.org"   
            Dim dr As DataRow
            Dim url As String
            Dim wechatserv As WeChat.WeChatPublicNo
            If e.Path > "" Then
                url = "http://" & e.host & "/" & e.Path.replace("\\","/").replace("\'","\'\'").replace("""","""""") & "/"
                MessageBox.show(url)
                wechatserv = Functions.Execute("WeChat_GetServerByUrl",url) \'查询是否有此地址的微信公众号
            End If
            If wechatserv IsNot Nothing Then \'说明是微信接口回调消息
                wechatserv.ProcessMessage(e,"WeChat_ProcessRequestMsg") \'处理消息并获取返回值
                \'Functions.Execute("LogText","回复=" & weRet)
            Else
                \'通用事件头
                \'如果网页路径定义了中间目录,如"ordertest/logon.htm" ,则下面的fl实际就是"d:\\web\\ordertest\\weui\\weui.me.js"
                \'因此你需要把WeUI框架三个文件复制到"d:\\web\\ordertest\\weui"目录下
                Dim fl As String = "C:\\web\\" & e.path
                If filesys.FileExists(fl)
                    Dim idx As Integer = fl.LastIndexOf(".")
                    Dim ext As String  = fl.SubString(idx)
                    Select Case ext
                        Case ".jpg",".gif",".png",".bmp",".wmf",".js",".css" ,".html",".htm",".zip",".rar"
                            e.WriteFile(fl)
                            Return \'这里必须返回
                    End Select
                End If
                
                Select Case e.Path
                    Case "gettoken" \'做为AccessToken中控服务
                        Dim atoken As WeChat.AccessToken = WeChat.WeChatAccessTokenController.GetServiceAccessToken(e.PlainText)
                        e.WriteString(atoken.ToJson()) \'返回access_token的JSON数据
                    Case "scanlogon" \'做为AccessToken中控服务
                        Functions.Execute("Http_ScanLogon" ,e)
                    Case Else
                        If e.Path.StartsWith("ordertest\\") Then \'公众号订单测试地址前缀都统一使用这个
                            Functions.Execute("Order_HttpRequest",e)
                        ElseIf e.Path.StartsWith("review\\") Then \'企业号订单审核地址前缀都统一使用这个
                            Functions.Execute("Order_HttpReview",e)
                        End If
                End Select
            End If
    End Select
    \'记录接收的消息,方便分析
    Dim str As new StringBuilder
    \'str.AppendLine("host=" & e.host)
    str.AppendLine("path=" & e.Path)
    str.AppendLine("HttpMethod=" & e.Request.HttpMethod)
    \'str.AppendLine("poststring=" & e.PlainText)
    \'str.AppendLine("ip=" & e.Request.RemoteEndPoint().Address.ToString())
    For Each key As String In e.Values.Keys
        str.AppendLine(key & "=" & e.Values(key))
    Next
    Functions.Execute("logText",str.ToString)
catch ex As Exception
    Functions.Execute("LogText",ex)
    e.WriteString("")
End Try




[此贴子已经被作者于2017/3/2 21:40:35编辑过]

--  作者:ycwk
--  发布时间:2017/3/2 16:19:00
--  
微信平台上的url ,第一次正确的时候留的是   http://yc****.ngrok.cc/FoxTest  ,官方帮助上面也是不带/的,而且第一次也顺利通过了  ,想改成   ycy******.viphk.ngrok.org/FoxTest   死活报token验证失败,客户端的url核对了,也是现在的地址yc****.viphk.ngrok.org/FoxTest 
[此贴子已经被作者于2017/3/2 21:41:30编辑过]

--  作者:有点蓝
--  发布时间:2017/3/2 16:20:00
--  

和这个代码没有关系,服务可能没有正常启动。

 

到服务端项目目录下找找有没有Mmsglog.txt文件,看看日志


--  作者:ycwk
--  发布时间:2017/3/2 16:37:00
--  
2017-03-02 15:49:55.1754
拒绝访问。
   在 System.Net.HttpListener.AddAll()
   在 System.Net.HttpListener.Start()
   在 Foxtable.HttpListenter.Start()

2017-03-02 15:50:21.6127
仅允许以“/”结尾的 URI 前缀。
参数名: uriPrefix
   在 System.Net.HttpListener.AddPrefix(String uriPrefix)
   在 System.Net.HttpListenerPrefixCollection.Add(String uriPrefix)
   在 UserCode.AYoyRb7s9PppbdnAV(ControlEventArgs e)

2017-03-02 15:54:22.7511
拒绝访问。
   在 System.Net.HttpListener.AddAll()
   在 System.Net.HttpListener.Start()
   在 Foxtable.HttpListenter.Start()

2017-03-02 16:11:08.0875
拒绝访问。
   在 System.Net.HttpListener.AddAll()
   在 System.Net.HttpListener.Start()
   在 Foxtable.HttpListenter.Start()

2017-03-02 16:23:20.0295
拒绝访问。
   在 System.Net.HttpListener.AddAll()
   在 System.Net.HttpListener.Start()
   在 Foxtable.HttpListenter.Start()

2017-03-02 16:24:23.3017
拒绝访问。
   在 System.Net.HttpListener.AddAll()
   在 System.Net.HttpListener.Start()
   在 Foxtable.HttpListenter.Start()


--  作者:狐狸爸爸
--  发布时间:2017/3/2 16:40:00
--  

Hello Word

我们先用一个经典的例子,来说明如何使用Foxtable实现http服务。

首先是一个重要提示:要启动http服务,必须以管理员身份运行Foxtable。