微信公众平台“分流器”


时间:2015-03-16

编者按 519号队员林佛钧,“微弹幕”和“微签到”就是他的代表作,现在更是微弹幕创业公司的法人代表,技术范十足的他这次由于业务的需要,又做出微信公众平台分流器。在他眼中,能用技术解决的问题都不是问题!作为“古神”弟子的他,正往“林神”的大路上迈进!

 

文|519号队员 林佛钧

1 何为微信公众平台“分流器”?

答:众所周知,微信公众平台开发者中心里的服务器配置里的url和token只能填一项,也就是说使用的公众平台只能有一个对应的后台服务器。那么“分流器”的功能就是使一个微信公众平台可以使用多个后台服务器。

2 为何要用“分流器”?

答:由于“微弹幕PC”的业务需求。“微弹幕PC”的用户一般都是一些企业,而这些企业一般都是使用第三方公司开发的公众平台管理系统,这些第三方有“微盟”,“掌上大学”等。那么,用户想在使用弹幕的同时又不影响他们原先的第三方管理系统的功能的强烈需求便得不到满足。使用“分流器”后便可以实现同时兼容“弹幕后台”和“微盟”后台(以下第三方公众平台后台均用“微盟”替代)。

3 所谓的“分流器”是什么?

答:分流器不是什么高端东西,就是使用php写的对微信的消息进行分流的后台代码。

4 “分流器”实现方法?

答:1 对微信发送的验证消息原封不动地丢给“微盟”去验证,而自己的“弹幕后台”不进行验证,执行下消息处理。(背景:微信公众平台管理系统第一次启用url和token时,微信服务器会通过get请求把加密后的token对给您的后台验证)

2 通过“是否开启弹幕”来判断要将微信服务器传来的信息对给“微盟”还是“弹幕后台”处理。(背景:我们向微信公众平台发送信息或通过微信服务器传到我们设置的后台。‘分流器’再将其分流转发)

5 实现“分流器”过程遇到的问题?

答:一些代码调试了很久才行(小的代码层面问题就不在此处提了)主要讲的就是,在完成之后,发现“微盟”等一些第三方可以完全兼容。但是唯独“掌上大学”识别出了我发过去的xml信息,不是官方发送的消息,也就是说它对来源做出了判断。在绝望之际,我请教了伟大的永远的古神古国杰师傅来指教,古神默默地留下一句话:“X-FORWARDED-FOR:”。于是弟子顿悟,通过代码”X-FORWARDED-FOR:“和$_SERVER['REMOTE_ADDR'](获取信息ip来源)结合将发出去的xml信息伪造成微信服务器发出的消息,最终骗过了“掌上大学”。(期间发现“掌上大学”对token其实没有进行判断验证,也就是只要有url就行,token随便填)

6 有什么想补充的?

答:感谢古神。