微信火了这么久,这两周第一次从一个开发者的角度来研究微信的生态系统而不是应用自己。如今作国内的项目或者产品不免都须要集成微信,其实如今微信背后的支撑平台已是很是繁杂的了:html
是否是感受有点懵,这么多平台如何选择,仍是须要根据本身系统的业务来看。我今天说的是开放平台的初步集成。java
采用倒序的方式咱们一步步来讲:redis
accessToken
,而后再去使用公众平台接口。那么获取accessToken
的过程实际就是公众平台受权给你这个第三方开放平台的过程。至关于他给你了一把打开他家门的钥匙。详见官方文档第5步.refresh_token
,锁换了找大爷拿把新的就行。那么这个管理员大爷怎么找到的呢?是在第一次受权成功后会经过参数返回给你的一个authorization_code
这个至关因而地图,能让你第一次在毫无经验的状况下找到第一把钥匙和管理员大爷,也就是官方文档的第4步。https://mp.weixin.qq.com/cgi-bin/componentloginpage?component_appid=xxxx&pre_auth_code=xxxxx&redirect_uri=xxxx
,redirect_uri就是把authorization_code
给你的入口。例如你写的是redirect_uri=mydomain.com/authrize/callback
,那么一旦受权成功,浏览器就会跳转到mydomain.com/authrize/callback?auth_code=xxxx
上来,你就能够获取authorization_code
这个地图了。api_create_preauthcode
这个接口得到的。而调用这个接口又须要component_access_token
,这个东东就是一个令牌,你做为第三方平台调用微信任何API都必须有这个令牌,得到这个令牌的办法就是用调用api_component_token
经过component_verify_ticket
去换。(仔细想想,其实component_verify_ticket
=refresh_token
, component_access_token
=accessToken
)这里面涉及到的变量不少,特别须要注意一些的:算法
component_verify_ticket
这张门票是微信推送,大概每隔十分钟推一次。api_component_token
刚才说了是用上面的那张门票换的,可是有保质期,2小时,那么能不能每次要调接口都用门票换一下?人家微信是有天天的接口调用次数限定的,因此建议用个cache缓存起来,到了1小时50分的时候让缓存失效,失效再去call API换。能够用redis的TTL实现。accessToken
也是有保质期的,因此必定要保存好对应的refresh_token
,到了1小时50分的时候再去换accessToken
。一旦拿到公众号的accessToken
,那么就能够像普通公众号的后台服务那样,好比获取粉丝列表啊,推送文章图片啊等等。小程序
PS: 最好采用加解密算法来进行消息的接受和推送。这里面有一个坑:api
异常java.security.InvalidKeyException:illegal Key Size的解决方案:在官方网站下载JCE无限制权限策略文件
另外根据官网提示首次验证服务器地址的有效性,必须返回一样的echostr
。浏览器