你的服务器没有正确响应Token验证的解决方法

你的服务器没有正确响应Token验证,请阅读消息接口使用指南 微信 微信公众平台开发模式 平台 消息 接口 启用 URL Token
作者:http://txw1958.cnblogs.com/

原文:http://www.cnblogs.com/txw1958/archive/2013/01/31/weixin-if2-enable.html 

 

你的服务器没有正确响应Token验证的解决方法

 

一、问题由来
在使用URL和Token启用微信公众平台开发模式消息接口的时候,我们会碰到下面三种情况 

1. 你的服务器没有正确响应Token验证,请阅读消息接口使用指南

这样回头检查一下各项配置是否正确。如果确定配置没有问题,请按下面的方法检查

2. 请求URL超时

你的服务器在国外,或者服务器网速不给力,一般多试几次就可以了。如果经常这样,就需要考虑更换服务器

3. 提交成功

 恭喜你,配置成功了。

我们来讲解一下第一种的原因及解决方法。

 

 

二、问题分析

首先要了解的是什么是URL和Token,在这里,URL就是放置了接口程序的网址,这个网址一般得是你自己的服务器或空间地址。你自己在这个空间上某个目录已经有接口程序了,你知道这个接口程序在互联网上的访问地址是什么。而Token就是一个令牌,该令牌是个数字或字母形式的字符串,用于微信服务器与你的服务器进行通讯的时候的身份验证。防止非法数据来搞乱。

 

然后要了解的是开发模式为什么要使用Url和Token,使用url是为了让微信服务器和你的服务器进行通讯对话,从而达到开发模式下自动回复的目的。而实现这个通讯,必须有相应的程序为你完成这个功能,而这个程序必须已经开发完成并且放置于url路径下面,当你填写完url和token的时候,微信服务器就会和你的服务器下的程序进行一次认证过程,认证通过表明这个服务器是你的并且程序没有问题。不然你填个不存在的url或者url下面个没有相应的接口功能,那是通不过的。

 

你可以先用下面的测试通过

URL:   http://discuz.comli.com/test.php
Token:  weixin

 

 

三、问题解决 

1.  技术分析法

这次我们在代码里面加入跟踪http记录的方法来查看我们自己的服务器收到了请求没有回应,还是微信根本没有发请求过来。
通过调用系统环境变量$_SERVER,可以查看到HTTP请求的信息,其中两项重要的是

把其加入代上面的代码中,并且将其写入到本地文件中来,全部代码如下:

 

这样,当我们提交之后,就会生成一个log.html文件在当前目录
用浏览器直接打开填写的url,也会写一次文件。

直接用浏览器打开url+log.html路径,我的记录如下:

2013-01-30 10:15:18 
2013-01-30 10:15:18 REMOTE_ADDR:212.179.24.103 Unknown IP
2013-01-30 10:15:18 QUERY_STRING:

在微信中点击提交一次,再一次生成记录,如下:

2013-01-30 10:15:49 
2013-01-30 10:15:49 REMOTE_ADDR:101.226.89.83 From WeiXin 2013-01-30 10:15:49 QUERY_STRING:signature=eded789463180edf6c13691398d0cb4c85fb0e23&echostr=5838479218127813673×tamp=1359100969&nonce=1359376876

从上可以看到,这次IP来自101.226.89.83,是微信的IP,我把这个IP加入到代码中自行判断了

 

现在可以根据下面的来检测自己的问题在哪一个地方

如果没有生成日志:

  那是微信服务器都没有联系到你,需要检查服务器是否可以通过公网访问,URL路径是否存在并且正确。

如果生成了日志:

  如果你生成了日志,有REMOTE_ADDR和QUERY_STRING,查看IP是不是来自上海(目前微信服务器部署在上海电信机房),查看QUERY_STRING格式是否和官方指南中描述的类似,如果这些没有问题,那先检查Token填写的是否和程序中的一致,再检查程序是否有问题。

 

如果上面的方法你没有看懂,或者无法解决该问题,建议你从微信公众平台的入门教程开始,学习一下微信公众平台开发的基础

点击进入 微信公众平台开发入门教程  

2.  付费解决法

如果使用上面方法还是没有解决你的痛苦,方倍工作室承接这一技术问题的解决。我们的联系QQ:1354386063

 

原文地址:http://www.cnblogs.com/txw1958/archive/2013/01/31/weixin-if2-enable.html 

 

 

更多干货,请关注方倍工作室微信公众平台账号,然后回复“教程”。

 原文:http://www.cnblogs.com/txw1958/p/wechat-tutorial.html 

====================================================================

方倍工作室微信公众平台账号关注方法:
1. 微信通讯录-添加朋友-查找公众号-搜索“方倍工作室”
2. 微信通讯录-添加朋友-搜号码-输入“pondbaystudio”
3. 使用微信扫描下面的二维码

 

 


转自:http://www.cnblogs.com/txw1958/archive/2013/01/31/weixin-if2-enable
2019-03-02 00:52

知识点

相关教程

更多

服务器编程

我想问下,我想给自己写的服务器发请求,让他帮我做一些计算,然后再把结果返回给我,属于什么方面的编程啊?然后有什么比较好的框架或者资源介绍一下,想学习下这方面的知识,充点电!

$.getJSON同步请求的解决方法

还没等jquery的请求回来,就往下执行了。现在让他同步即可,让他同步的方法是在请求之前加上$.ajaxSettings.async = false

Nutch报错和解决方法

Indexer: java.io.IOException: Job failed!  环境:nutch1.8 local模式 solr服务正常 ParseSegment:finishedat2014-07-1421:21:19,elapsed:00:00:35CrawlDBupdateCrawlDbupdate:startingat2014-07-1421:21:21CrawlDbupdate:d

Debian 中文乱码解决方法

在debain中打开一个文件,出现中文乱码。如果你用SecureCRT客户端访问,并且设置客户端的编码是utf8,但还是乱码,说有你的系统设置的编码有可能有问题。用locale查看一下...

xxx is not in the sudoers file解决方法

用sudo时提示"xxx is not in the sudoers file. This incident will be reported.其中XXX是你的用户名,也就是你的用户名没有权限使用sudo,我们只要修改一下/etc/sudoers文件就行了。下面是修改方 法: 1)进入超级用户模式。也就是输入"su -",系统会让你输入超级用户密码,输入密码后就进入了

web服务器介绍

这些服务器端的程序通常产生一个HTML的响应来让浏览器可以浏览

Hadoop错误日志整理及解决方法

Hadoop错误日志整理及解决方法 现象:3个节点,启动之后namenode报错,且存活节点( Live Nodes )只显示1个 2013-05-14 20:01:09,839 INFO org.apache.hadoop.ipc.Server: IPC Server handler 9 on 9000: starting 2013-05-14 20:01:13,659 ERROR org.ap

如何构建一个属于自己私有的git服务器

现在java大学网的项目也是基于git管理,当时建的git服务器是基于gitosis,本教程是基于gitolite构建一个属于自己私有的git服务器

关于Service常驻内存不被清理的解决方法.

  众所周知, Service是跑后台的. 但是有些Rom厂商把一键清理做的真是太好用了, 以至于一键清理变成了一种习惯, Service已经变的不再是Service了. 那为什么像诸如360, 微信, QQ...却可以傍山傍水.哦, 用错词了. 大家懂的. .   言归正传, android的系统进程分为五个等级, Foreground Process(前台进程), Visible Proces

Linux 忘记root密码解决方法

很多朋友经常会忘记Linux系统的root密码,linux系统忘记root密码的情况该怎么办呢?重新安装系统吗?当然不用!进入单用户模式更改一下root密码即可。

Hadoop关于处理大量小文件的问题和解决方法

HDFS处理大量小文件 时的问题 小文件指的是那些size比HDFS 的block size(默认64M)小的多的文件。如果在HDFS中存储小文件,那么在HDFS中肯定会含有许许多多这样的小文件(不然就不会用Hadoop了)。 而 HDFS的问题在于无法很有效的处理大量小文件。 任何一个文件,目录和block,在HDFS中都会被表示为一个object存储在 namenode的内存中,没一个obje

Mysql错误:Ignoring query to other database解决方法

用source c:\xxx.sql,出现Ignoring query to other database,上网搜了一下,原来是mysql -root -p,改为mysql -uroot -p

Eclipse 插件Hadoop点击没有反应解决方法

eclipse 3.3 ,3.7 和4.2都测试过了,Hadoop 0-21.0 , 拷贝hadoop-0.21.0-eclipse-plugin到eclipse的plugins中,此时启动eclipse-new hadoop location是没有反应的,是因为在这个插件中缺少几个jar包,并且文件MANIFEST.MF中的地址也是错误的 把缺少的文件拷入进去hadoop-common-0.21

bash: scp: command not found的解决方法

# scp -bash: scp: command not found 查看系统是否已经安装了scp [root@master tmp]# which scp /usr/bin/scp 已经安装,把他删掉 [root@master tmp]# rpm -qf /usr/bin/scp openssh-clients-5.3p1-84.1.el6.i686 重新安装openssh-clients即可

Solr 搭建搜索服务器

Solr已经发布3.5版本了,同时它是基于Lucene 3.5的。我们在基于Solr进行二次开发之前,首先要搭建起一个搜索服务器,在熟悉Solr的基本功能的基础上,可以根据实际应用的需要进行个性化定制开发。因为Solr提供了一种插件机制,我们可以根据自己的需要进行定制,然后在Solr的配置文件中(solrconfig.xml)进行配置即可达到预期的要求。在Solr的发行包中给出了一个配置的例子,我

最新教程

更多

java线程状态详解(6种)

java线程类为:java.lang.Thread,其实现java.lang.Runnable接口。 线程在运行过程中有6种状态,分别如下: NEW:初始状态,线程被构建,但是还没有调用start()方法 RUNNABLE:运行状态,Java线程将操作系统中的就绪和运行两种状态统称为“运行状态” BLOCK:阻塞状态,表示线程阻塞

redis从库只读设置-redis集群管理

默认情况下redis数据库充当slave角色时是只读的不能进行写操作,如果写入,会提示以下错误:READONLY You can't write against a read only slave.  127.0.0.1:6382> set k3 111  (error) READONLY You can't write against a read only slave. 如果你要开启从库

Netty环境配置

netty是一个java事件驱动的网络通信框架,也就是一个jar包,只要在项目里引用即可。

Netty基于流的传输处理

​在TCP/IP的基于流的传输中,接收的数据被存储到套接字接收缓冲器中。不幸的是,基于流的传输的缓冲器不是分组的队列,而是字节的队列。 这意味着,即使将两个消息作为两个独立的数据包发送,操作系统也不会将它们视为两个消息,而只是一组字节(有点悲剧)。 因此,不能保证读的是您在远程定入的行数据

Netty入门实例-使用POJO代替ByteBuf

使用TIME协议的客户端和服务器示例,让它们使用POJO来代替原来的ByteBuf。

Netty入门实例-时间服务器

Netty中服务器和客户端之间最大的和唯一的区别是使用了不同的Bootstrap和Channel实现

Netty入门实例-编写服务器端程序

channelRead()处理程序方法实现如下

Netty开发环境配置

最新版本的Netty 4.x和JDK 1.6及更高版本

电商平台数据库设计

电商平台数据库表设计:商品分类表、商品信息表、品牌表、商品属性表、商品属性扩展表、规格表、规格扩展表

HttpClient 上传文件

我们使用MultipartEntityBuilder创建一个HttpEntity。 当创建构建器时,添加一个二进制体 - 包含将要上传的文件以及一个文本正文。 接下来,使用RequestBuilder创建一个HTTP请求,并分配先前创建的HttpEntity。

MongoDB常用命令

查看当前使用的数据库    > db    test  切换数据库   > use foobar    switched to db foobar  插入文档    > post={"title":"领悟书生","content":"这是一个分享教程的网站","date":new

快速了解MongoDB【基本概念与体系结构】

什么是MongoDB MongoDB is a general purpose, document-based, distributed database built for modern application developers and for the cloud era. MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。

windows系统安装MongoDB

安装 下载MongoDB的安装包:mongodb-win32-x86_64-2008plus-ssl-3.2.10-signed.msi,按照提示步骤安装即可。 安装完成后,软件会安装在C:\Program Files\MongoDB 目录中 我们要启动的服务程序就是C:\Program Files\MongoDB\Server\3.2\bin目录下的mongod.exe,为了方便我们每次启动,我

Spring boot整合MyBatis-Plus 之二:增删改查

基于上一篇springboot整合MyBatis-Plus之后,实现简单的增删改查 创建实体类 添加表注解TableName和主键注解TableId import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baom

分布式ID生成器【snowflake雪花算法】

基于snowflake雪花算法分布式ID生成器 snowflake雪花算法分布式ID生成器几大特点: 41bit的时间戳可以支持该算法使用到2082年 10bit的工作机器id可以支持1024台机器 序列号支持1毫秒产生4096个自增序列id 整体上按照时间自增排序 整个分布式系统内不会产生ID碰撞 每秒能够产生26万ID左右 Twitter的 Snowflake分布式ID生成器的JAVA实现方案