1,前言

微信企业号与微信公众号的配置流程大同小异(殊途同归)。

2,准备工作

2.1,企业号的申请与域名的申请及备案

企业号(公众号)申请需要提前申请,因为有些东西需要备案,审核啥的;

测试环境/生产环境的域名需要提前准备,无论是个人还是企业应用搭建都需要提前准备,因为域名备案是需要一定时间的;

2.2,域名与企业号(公众号)配置产生联系的地方

2.2.1,网页授权及JS-SDK的域名白名单校验

2.2.2,企业微信授权登录校验

点击上图下方中间的“企业微信授权登录”,跳转到下图,在框起来的部分将对应环境的域名添加上

2.3,菜单的配置

2.3.1,工作台的相关配置

1)子应用跳转

常规情况下,点击子应用,会默认跳转到消息列表页(如下图)

但如果想要点击按钮直接跳转到应用(此时消息列表可以通过首页,点击消息框跳转),则需要先配置工作台应用主页(该主页的配置连接为子应用项目资源的访问路径,例如www.qq.com);同时自定义菜单还是该怎么配怎么配(这一步只是想点击子应用的时候不跳转到消息列表而是直接跳转子应用,所以如果不想如此处理(即还是想按照默认模式,先跳转消息列表,然后在做对应的操作)可以只配置自定义菜单,不去管工作台应用主页这个功能

2)工作台应用的展示(默认是列表模式,下图为选了宫格模式之后的展示)

2.4 微信JS-SDK的使用

2.4.1,JS-SDK的API文档

        2.4.2,JS-SDK授权,关于OAuth2.0链接

微信的授权流程是基于OAuth2.0(关于概念可以参考https://www.jianshu.com/p/9d0264d27c3b)的,通常我们在处理第三方授权登录的时候使用的都是静默授权(微信公众号有一个显示授权的概念,而企业号没有这个概念,它只有一个类似静默授权的过程,即授权过程不暴露给用户,用户只能感受到浏览器似乎重定向了一次)

上述授权的流程大致为:

1)给应用配置访问链接,该链接为参考文档-身份验证-构造网页授权链接部分所述的链接

2)用户点击子应用,访问配置的访问链接所指向的地址

3)接第二步,当前地址指向一个授权页,该授权页会根据访问链接上的一些参数(例如appid,即企业的CorpID)返回一个授权令牌code,并将其拼在重定向链接(即访问链接上redirect_uri参数的值)上;然后跳转到重定向链接所指向的地址(该地址即为子应用项目资源目录所在地址

4)从第四步开始,项目资源正式开始访问;在访问资源之前,调用后端给的授权接口(该接口用来接收重定向链接上拼接的code,然后在后台用该code和access_token来跟微信服务器交换目标用户信息,值得一提的是,微信静默授权只能拿到用户的基本信息,同时该信息为企业通讯录里已经维护的用户信息)将重定向链接上拼接的授权令牌code传到后端交换用户的基本信息(在这个过程中实际上是可以将token一并返回,但有时候,部分平台的token实际上是一个封装好的接口来获取的,所以要根据实际情况来处理(但用户信息确是在这一步返回的)

5)token和用户信息可以酌情考虑在会话期间内缓存在本地(虽然这是一句废话,但希望这真是一句赘述)

6)上述过程中的一些注意事项:

a)上述过程中,授权令牌code是有时效限制的,它的失效为5分钟,且在这5分钟之内只能使用一次,也就是说,如果code在请求回来后,如果你在5分钟内没有使用它(或是5分钟内使用过一次之后),当前这个code就自动失效了。

b)后端通过access_token和授权令牌code换去用户信息的时候会出现一些问题,例如40029这个错误,它的含义是授权令牌code错误,网上有指出302跳转会出现重定向问题(https://blog.csdn.net/hhchor/article/details/53450189);但需要说明的是,后端在换取用户信息的时候,拿去交换的参数是有两个;尽管40029这个错误是报的不合法的code,但最后排查了下,发现生成一个错误的access_token,跟code去交换信息的时候,它不会报access_token不合法,而是报code不合法(这波操作简直666)。。。

指出这个问题的意义在于,无论是微信企业号还是微信公众号开发,在实际开发过程中,会出现很多奇奇怪怪的错误,如果排除了可能导致该问题的所有因素,那么即使有多么不可能,也该尝试怀疑一下是不是外部因素导致的。

c)微信jssdk调用初始化过程中需要的三个参数(这三个参数为生产ticket的相关参数,ticket用于生产access_token,而access_token用于跟code一起交换用户数据);建议了解下开发者文档里的JS-SDK使用权限签名算法这一节以及常见错误及解决方法这一节,因为有些参数是需要在后端缓存的,不能频繁调用(频繁调用会被拉黑的哦)

7)微信外部扫一扫(栗子:微信问卷调查)

扫一扫这个操作实质上是微信客户端解析一个二维码拿到一个访问链接(该链接就是上述的授权访问链接),并且当微信判断该二维码的内部信息是一个链接的时候将自动打开一个webview并访问该链接。所以本质上通过扫一扫访问一个应用和点击应用图标访问该应用没什么太大区别。

3,鸣谢

1,感谢https://www.jianshu.com/p/9d0264d27c3b对于OAuth2.0的解释

2,感谢https://blog.csdn.net/hhchor/article/details/53450189对于企业号开发过程中40029错误码的相关解决方案

微信企业号(公众号)开发流程汇总相关推荐

  1. 微信公众号文章复制到服务器后台,微信个人公众号开发-打通后台服务器任督二脉...

    上篇文章 和大家分享了如何搭建免费的微信个人公众号开发所需要的后台服务器. 这篇就来继续说说如何让你的公众号与后台服务器交互. 一. 微信公众号接口准备 这里我们要用前面搭建的aws服务器上部署的fl ...

  2. 微信公众号开发工具汇总

    前面写了篇入坑指南,介绍了下开发微信公众号的基本流程.最近又捣鼓了一阵,发现这开发工具的选择对于提高开发效率真是有莫大的帮助,所谓"只要工具选得好,月底奖金跑不了".今天得空,笔者 ...

  3. 快递Api接口 微信公众号开发流程

    之前的文章,已经分析过快递Api接口可能被使用的需求及场景:今天呢,简单给大家介绍一下微信公众号中怎么来使用快递Api接口,来完成我们的需求和业务场景. 开发语言:Nodejs,其中用到了Neo4j图 ...

  4. 微信小程序和公众号开发流程

    最近在公司参与微信小程序的开发,小程序近几年非常火,通过最近的学习分享一下开发微信小程序的流程 1.了解一下微信官方开发公众号文档 微信官方文档-公众号 对文档介绍有一个大致的印象,然后开始动手配置 ...

  5. java微信个人订阅号发信息_微信个人公众号开发-java

    一:申请公众号 无聊的去申请一个个人公众号,试了下微信实现自定义菜单与自定义对话的一些基本功能,如果多花点时间,金钱(= =!)还是有不少功能可以使用,还是蛮有意思的. 废话不多说,先看一下申请的流程 ...

  6. YJKJ公众号开发流程

    在这篇微信公众平台开发教程中,我们假定你已经有了PHP语言程序.MySQL数据库.计算机网络通讯.及HTTP/XML/CSS/JS等基础. 我们将使用微信公众账号方倍工作室作为讲解的例子,二维码见底部 ...

  7. 理解透彻!java微信公众号开发流程

    01 蚂蚁金服面试题之MySQL 之前的阿里面试题都有做总结,具体面试题内容整理成了文档,本文是针对MySQL系列的,所以下面只展示了自己第一次面试阿里时被吊打问到的一些MySQL难题. 1.请解释关 ...

  8. python微信公众号开发教程_python微信公众号开发简单流程实现

    本文为大家分享了python微信公众号开发的简单过程,供大家参考,具体内容如下 网上有很多微信公众号的开发教程,但是都是好几年前的了,而且很多都是抄袭其他人的,内容几乎一模一样.真的无语了.只好自己总 ...

  9. 视频教程-SpringBoot微信公众号开发-微信开发

    SpringBoot微信公众号开发 就职于国内知名在线互联网旅游公司,10+互联网开发经验,精通前后端开发 刘志强 ¥149.00 立即订阅 扫码下载「CSDN程序员学院APP」,1000+技术好课免 ...

  10. 微信公众号开发系列-玩转微信开发-目录汇总

    引言 最遗憾的不是把理想丢在路上,而是理想从未上路. 每一个将想法变成现实的人,都值得称赞和学习.致正在奔跑的您! 在现在这个无处不在的互联网背景下,各种应用已不再仅仅局限于网页或桌面应用了,IOS. ...

最新文章

  1. 互联互通下的超级App价值重构
  2. 循环卷积和周期卷积的关系_PSConv:多位一体、即插即用卷积单元
  3. 《数据库SQL实战》查找薪水涨幅超过15次的员工号emp_no以及其对应的涨幅次数t
  4. 最近公共祖先_LCA 最近公共祖先
  5. [css] box-sizing的宽度包含了哪些?
  6. 二维三角元有限元方法matlab,有限元C++编程实践.doc
  7. 改变图像的对比度和亮度
  8. 启明星系统简介--兼论启明星OA思想
  9. 爱快路由器下水星(Mercury)无线管理器AC跨三层发现AP
  10. 网线水晶头接法图解8根线芯顺序排序图示
  11. 迅捷路由虚拟服务器设置,迅捷 FWR310 无线路由器端口映射设置指南
  12. linux 谷歌日语输入法下载软件,Linux Mint---fcitx中文,日语输入法
  13. JAVA基础-GUI实践总结
  14. 170323 PyQt5 ListWidget的删除
  15. 深入了解scratch中的“移动10步”和(你真的了解scratch吗?scratch初学者值得一看)
  16. Day1_Python基础
  17. 微信分享之SPA的坑
  18. Python摄氏度与华氏度的相互转换
  19. python网络爬虫学习(六)利用Pyspider+Phantomjs爬取淘宝模特图片
  20. 高级项目经理十大领域背诵口诀与论文模板

热门文章

  1. Android 关于图片的压缩
  2. 揭开 Xxl-job 的神秘面纱
  3. 上市公司创新研发支出数据(2006-2018年)
  4. Linux服务器下安装vsftpd,搭建文件服务器
  5. 6.2.1.1UE maximum output power - EIRP and TRP——翻译
  6. [EMNLP 2022] VIRT: Improving Representation-based Text Matching via Virtual Interaction
  7. 创新式开发探索(三) —— 反思自己的开发活动
  8. python激光扫描雷达_一文详解固态激光雷达的里程计(loam_livox)
  9. 家用无线路由器的设置
  10. RxSwift核心逻辑