现在我有一下开发需求:开发服务器收到微信服务器传送来的公众号用户的消息,通过某个参数判断其是否为同一个用户,并运行相应的逻辑回答问题。
最开始,服务器后台代码是通过收到的微信服务器发送来的消息的ip来识别是否是同一用户的,但是,经测试发现,明明是同一个用户发送来消息,发送给后台时显示的ip却是不一样的,确切的说是在不断变化的。这导致了后台代码不能正确识别,无法正确回答客户问题。之后,我上网几经查看,发现微信服务器不允许获取用户的真实ip地址,所以我猜测之前获得的ip地址,可能是微信后台服务器经过某种手段处理得到的。而与ip地址相对应,每一个微信公众号中的每个用户,都有一个唯一的标识符openid。故为我们制定一个解决方案:使用openid+‘#’+content的格式,服务器模式匹配区分#左右两边的字符串,获得openid和content。如果openid一样,则是相同的用户。
此外,为了获得openid,我又查了一些网页,大都是针对网页授权的途径来获取openid的,但是我们的业务目前并没有网页授权的需要,也没有相应的网页,不能提供url。正在我百思不得其解的情况下,我查到一篇文章,看到最下面一行字:<fromUserName>属性值即为用户的openid属性值,我天~这个<fromUserName>属性值是非常容易获取到的。于是乎,我就利用fromUserName+‘#’+content的字符串格式进行交互。经测试,结果正确。