什么是微信第三方平台的初步集成

微信火了这么久,这两周第一次从一个开发者的角度来研究微信的生态系统而不是应用本身。现在做国内的项目或者产品难免都需要集成微信,其实现在微信背后的支撑平台已经是非常繁杂的了:

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

是不是感觉有点懵,这么多平台如何选择,还是需要根据自己系统的业务来看。我今天说的是开放平台的初步集成。

采用倒序的方式我们一步步来说:

  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: 最好采用加解密算法来进行消息的接受和推送。这里面有一个坑:

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

本文转载自网络,版权归原作者所有,所述观点跟星翼无关。

文章出自:深圳微信开发公司,原文地址:http://www.iswweb.cn/news/1627.html,转载请保留文章出处即可!

本站文章大多数属于原创文章,欢迎大家转载!少数我们转载文章的文章,如未获您授权请点下方联系我们,我们会尽快下线处理!

相关内容

在线客服

扫描二维码马上微信沟通:

  • 微信小程序定制开发、微信公众号定制开发
    微信小程序定制开发

  • 微信公众号代运营、微信公众号托管
    微信公众号开发运营

服务热线

0755-82685986 、 82685936

159-8667-8737(微信同号)
24小时热线电话,非工作时间自动呼叫转移

邮箱

marekt@iswweb.com
电子邮箱

扫码沟通

15986678737 扫码不加微信即时沟通