说一说微信第三方平台的初步集成

微信火了这么久,这两周第一次从一个开发者的角度来研究微信的生态系统而不是应用自己。如今作国内的项目或者产品不免都须要集成微信,其实如今微信背后的支撑平台已是很是繁杂的了:html

  • 公众平台(订阅号、服务号、企业号、小程序)
  • 开放平台(网页应用、移动应用、公众号第三方平台开发)
  • 商户平台 (支付)
  • 服务商平台(代支付)

是否是感受有点懵,这么多平台如何选择,仍是须要根据本身系统的业务来看。我今天说的是开放平台的初步集成。java

采用倒序的方式咱们一步步来讲:redis

  1. 开放平台须要代公众号实现功能,就必须拿到公众号的accessToken,而后再去使用公众平台接口。那么获取accessToken的过程实际就是公众平台受权给你这个第三方开放平台的过程。至关于他给你了一把打开他家门的钥匙。详见官方文档第5步.
  2. 得到钥匙的过程但是须要一些功夫的,由于老换锁啊,每7200s换一次,因此有位管理员大爷出现了,就是refresh_token,锁换了找大爷拿把新的就行。那么这个管理员大爷怎么找到的呢?是在第一次受权成功后会经过参数返回给你的一个authorization_code这个至关因而地图,能让你第一次在毫无经验的状况下找到第一把钥匙和管理员大爷,也就是官方文档的第4步。
  3. 想要找到地图,给公众平台的管理员发个连接吧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这个地图了。
  4. 上一步的连接中有一个pre_auth_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实现。
  • 类比的上文第1步提到的公众号的accessToken也是有保质期的,因此必定要保存好对应的refresh_token,到了1小时50分的时候再去换accessToken

一旦拿到公众号的accessToken,那么就能够像普通公众号的后台服务那样,好比获取粉丝列表啊,推送文章图片啊等等。小程序

PS: 最好采用加解密算法来进行消息的接受和推送。这里面有一个坑:api

异常java.security.InvalidKeyException:illegal Key Size的解决方案:在官方网站下载JCE无限制权限策略文件

另外根据官网提示首次验证服务器地址的有效性,必须返回一样的echostr浏览器

相关文章
相关标签/搜索