本文作者:Linkflow首席架构师 – 王鼎,11年软件研发经验,6年SaaS(基于公有云或私有云),熟悉ERP, CDP, omin渠道销售解决方案。参与SaaS产品的大型开发,成员400余人。在一家初创公司从零开始开发新产品。从事SaaS架构和技术管理工作。建立新的开发团队,专注于CDP和Martech SaaS解决方案。
微信火了这么久,这两周第一次从一个开发者的角度来研究微信的生态系统而不是应用本身。现在做国内的项目或者产品难免都需要集成微信,其实现在微信背后的支撑平台已经是非常繁杂的了:

公众平台(订阅号、服务号、企业号、小程序)
开放平台(网页应用、移动应用、公众号第三方平台开发)
商户平台 (支付)
服务商平台(代支付)
是不是感觉有点懵,这么多平台如何选择,还是需要根据自己系统的业务来看。我今天说的是开放平台的初步集成。

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

开放平台需要代公众号实现功能,就必须拿到公众号的accessToken,然后再去使用公众平台接口。那么获取accessToken的过程实际就是公众平台授权给你这个第三方开放平台的过程。相当于他给你了一把打开他家门的钥匙。详见官方文档第5步.
获得钥匙的过程可是需要一些功夫的,因为老换锁啊,每7200s换一次,所以有位管理员大爷出现了,就是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这个地图了。
上一步的链接中有一个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无限制权限策略文件
另外根据官网提示首次验证服务器地址的有效性,必须返回同样的echostr。

技术丨说一说微信第三方平台的初步集成相关推荐

  1. 微信第三方平台-授权流程经验分享

    原文地址: www.jianshu.com/p/67836ffa9- 在做微信第三方平台开发的时候,虽然授权的技术实现流程比较简单,但是相对于一个key直接集成的一些其他的服务来说,还是有一些步骤,过 ...

  2. java开发微信第三方平台 模板消息发送消息案例

    今天利用自己的一点休息时间来编写了一个利用java开发的微信第三方平台,这次开发的目地是利用微信的模板消息无限的向关注用户推送消息.经过反复的测试,无BUG出现. 开发语言:java,数据库:mysq ...

  3. JeewxBoot微信管家平台 支持微信公众号/小程序/微信第三方平台/抽奖活动等

    JeewxBoot是一款免费的JAVA微信管家平台,支持微信公众号.小程序.微信第三方平台.抽奖活动等.JeewxBoot已经实现了系统权限管理.公众号管理.抽奖活动等基础功能,便于二次开发,可以快速 ...

  4. 微信服务通知消息找回_如何通过微信第三方平台群发服务号消息通知?

    在公众号后台可以群发功能实现,第三方平台可以用微号帮功能服务号每月400次群发实现,服务号每个月可以群发400次消息,但每个粉丝每月只能收到4次消息,不可突破微信规则.本功能主要为微信服务号实现千人千 ...

  5. 微信第三方平台授权时域名问题

    最近在处理微信第三方平台的问题,在授权的时候总是提示"请确认授权入口页所在域名,与授权后回调页所在域名相同,并且,此两者都必须与申请第三方平台时填写的授权发起页域名相同." 如提示 ...

  6. 微信第三方平台的开发过程一

    整理一下最近研究微信第三方平台的一些东西 注意的东西: 第一,不要以为微信的UID机制与第三方平台绑定有关.这个机制,相对第三方平台就是一个鸡肋的东西,只适合一家公司管理十个以内的公众号用的.多的就没 ...

  7. 微信第三方平台授权流程- java

    1. 微信第三方平台的开发,第一步就是公众号的授权,授权成功后第三方凭条才能利用公众号的appid和token获得公众账号额信息,并代替公众账号完成一些功能. 2. 授权的流程,理论图 代码流程, 1 ...

  8. 用微信第三方平台授权小程序业务

    如果本文对你有用,请爱心点个赞,提高排名,帮助更多的人.谢谢大家!❤ 如果解决不了,可以在文末进群交流. 本文章转自php中文网:http://www.php.cn/weixin-kaifa-4069 ...

  9. 基于NodeJs的微信第三方平台认证授权流程

    为什么80%的码农都做不了架构师?>>>    需要解决的问题 微信的第三方开发者平台采用的是OAuth的认证流程.因此,需要解决的问题是: 按照OAuth的流程,调用微信第三方平台 ...

最新文章

  1. 串口 能 按位传输吗_六类网线能传输多少米?家装六类网线有必要吗?
  2. 本地存储与云存储方案价值对比—Vecloud
  3. python随机抽取人名_用Python打造一个CRM系统(五)
  4. P3629-[APIO2010]巡逻【树的直径】
  5. vs2019新建android生成app,VS2017 VS2019创建离线安装包
  6. 常用MIME类型,解决IIS布署后字体文件、mp4视频文件等not found 的错误
  7. NCRE四级网络工程师考题详解----目录分解法
  8. 5g理论速度_快看看 5G 的实际网速,失望还是兴奋?
  9. python安装jupyter出现问题_有关jupyterhub安装的问题
  10. F1060 IPV6 BGP4+与静态路由重分布典型组网配置案例
  11. 关于<meta name=“viewport“ content=“width=device-width,initial-scake=1.0, maximum-scale=1.0,user-s..“>
  12. access建立er图_Visio绘制ER图教程
  13. 山东大学软件学院计算机组成原理课程设计实验一
  14. 永中集成Office 2013 简体中文免费版
  15. 软件过程管理期末复习资料
  16. c语言银行卡六位密码编译,用c语言生成六位的随机密码。
  17. win配置前端开发环境
  18. android面试!一线互联网移动架构师设计思想解读开源框架!复习指南
  19. Dilated Convolution介绍
  20. find()和findIndex()区别和用法

热门文章

  1. 别具一格,原创唯美浪漫情人节表白专辑,(复制就可用)(html5,css3,svg)表白爱心代码(1)
  2. 如何转行AI产品经理
  3. 华为云讲解:2. Istio Pilot 与服务发现
  4. java封神OL_MobaXterm:远程终端登录软件封神选手
  5. 如何解决网站大流量和高并发问题?
  6. UVA 几道dp题总结
  7. iphone投屏老是显示无法连接服务器,iPhone 无法投屏到电视如何解决?
  8. Android如何安全替换证书
  9. django文件上传功能的实现
  10. FFmpeg4编程入门---视频篇