1 授权方案

场景:一个公众号的多个菜单可能对应后端多个不同的服务(多个服务是物理分离的)

问题点: 微信公众平台要求code授权回调地址只能是一个特定的域名或者路径,最多能配置两个,如果多个服务分布在不同的域名下,只能由其中一个接收授权code

解决方案,做一个公共的授权码转发服务,不同域名下授权码接收接口通过授权码转发服务来转发,即 二次重定向方案,把微信重定向url中的code参数以及state参数重新拼接到目的重定向接口后进行二次重定向即可。

2 授权回调接口发起的时机问题

场景: 发起时机有两种:

1 公众号菜单直接配置成微信授权地址,授权回调后直接转发到相应菜单对应的功能的h5首页,h5不再发起任何授权

2 菜单直接配置对应功能的h5首页,在h5首页发起微信授权

要点分析:1方案相当于只授权一次,菜单h5首页不能处理授权过期后的重新授权,只能退出到菜单页重新授权

3 授权转登录问题解决方案

场景: 授权码传递给公众号h5后台,后台根据code获取用户信息,如何进行会话保持的问题

方案1:有状态session机制

h5后端服务获取到授权码后,根据appid和密钥以及code获取用户openid、用户信息访问令牌、用户信息刷新令牌、用户信息加密key等;然后根据访问令牌再次请求微信公众平台获取头像、用户名等信息,存放到session中,并设置session过期时间,然后返回给前端sessionid,后续接口都带着sessionid,后端业务接口根据sessionid做身份和权限的认证。

方案2 : 无状态token机制

同方案1,区别在于获取到的用户信息不通过session存放,而是颁发一个加密的令牌给前端(前端可以选择将令牌存放到cookie或者本地存储,本地存储有缺点,下文细说),加密的令牌中存放用户信息,过期时间、令牌签名等。h5发起的后续业务接口都带着token(可以选择通过http请求头带给后端)给服务端接口,后端服务通过校验和解密token来获取用户信息 以及后续的鉴权等。详细过程要比这复杂点,主要是后端服务令牌鉴别相关的工作比较多点,这里不再细说。

4 授权状态保持问题

场景: 防止公众号h5多次发起授权的问题

方案: 通过上文3颁发令牌或者sessionid,把sessionid或者令牌存储到cookie中,(注意:不要用本地存储存放,因为微信公众号壳子有问题,从菜单对应的h5退出到公众号菜单页后,很多安卓机器本地存储失效,导致下次进入菜单内页后需要重新授权)后端接口带着token或者sessionid直接请求,由后端判断是否需要重新发起授权。

(完)

公众号开发要点流程设计思路总结相关推荐

  1. 微信公众号开发 - 配置表设计以及接入公众号接口开发

    微信公众号开发文章目录 1.微信公众号开发 - 环境搭建 2.微信公众号开发 - 配置表设计以及接入公众号接口开发 3.微信公众号开发 - token获取(保证同一时间段内只请求一次) 4.微信公众号 ...

  2. CSDN学霸课表——微信公众号开发全部流程

    < 微信公众号开发全部流程> 我是一名php开发菜鸡,目前觉得自己技术不太行了,所以想提高一下自己的技术水平,然而没找到更好的方法,所以我打算将所有的微信接口全部写一遍,一边学习,一边开发 ...

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

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

  4. 微信公众号开发java流程_微信公众号开发教程java 编程语言的特点及选择

    微信公众号开发教程java 编程语言的特点及选择 微信公众号为用户提供了相关的工具,来对微信公众号进行一个简单的开发.但是如果想实现一些复杂的功能,其实还是要借助于一些编程语言的使用.所以要了解,在微 ...

  5. 微信公众号开发全部流程,使用自己的订阅号开发的1

    前言:我是一名php开发菜鸡,目前觉得自己技术不太行了,所以想提高一下自己的技术水平,然而没找到更好的方法,所以我打算将所有的微信接口全部写一遍,一边学习,一边开发,一边以写日记的方式记录下这段艰辛但 ...

  6. 微信公众号开发全部流程,使用测试号开发的2

    前言:上一个微信测试号几个接口的的发布有很多人关注了,我这篇文章比较适合新手,和我一样的菜鸟,自己研究是很孤独的,不过还是希望能帮助到很多人,如果有人愿意交流一下可以加QQ群:390679585,不是 ...

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

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

  8. 基于 Java Spring Security 的关注微信公众号即登录的设计与实现 ya

    太长不看版本 本文通过一个实际的具有一定商业价值的项目,展示了 API 优先的开发方法.通过薅羊毛的方式,落地了 Free Arch 架构. 背景和价值 通过微信公众号积累粉丝并进行商业活动宣传,是新 ...

  9. 微信公众号开发 - token获取(保证同一时间段内只请求一次)

    微信公众号开发文章目录 1.微信公众号开发 - 环境搭建 2.微信公众号开发 - 配置表设计以及接入公众号接口开发 3.微信公众号开发 - token获取(保证同一时间段内只请求一次) 4.微信公众号 ...

最新文章

  1. 高考查分数微信就能搞定
  2. Emgucv粗略抠取车牌
  3. 说说那些死于决斗的大牛
  4. python write报错a byte-like object is required.not str
  5. c语言实现判断两个子图是否同构问题_经典问题-回溯法-最大团问题
  6. Java中CAS(Compare And Swap,比较和交换)算法的技术原理简述
  7. 一次由于网卡流量跑满引起的服务器丢包总结(sar命令排查)
  8. 吴恩达深度学习——超参数调优
  9. 触发器的创建和使用(sql2005)
  10. 构建之法1,5,17章学习心得
  11. 《京东大鼓——老年迪斯科》(董湘昆)(唱词文本)
  12. CTF中各种好用的软件以及解密网址合集
  13. win7系统rpc服务器不可用无法开机,win7系统RPC服务器不可用的解决方法
  14. 聊聊计算和这个世界(上)
  15. 数据库系统概论第五版第二章习题6(SPJ数据库查询操作)
  16. 25岁研究生拿高薪互联网的offer,意气风发的走出学校
  17. JAVA接口签名sign生成工具类
  18. Android手势下拉抽屉效果
  19. 基于V4L2的视频驱动开发(2) 华清远见 刘洪涛
  20. VS集成Qt环境搭建

热门文章

  1. 2022.1.22-参加YMO青少年奥林匹克数学竞赛总决赛(金牌)
  2. 11月中下旬张家界自由行
  3. 机器语言——码运算(详解反码补码由来)
  4. USB的前世今生(二)2022-02-10
  5. 跳槽对个人发展的利与弊是什么?
  6. 服务器托管和租用如何选择?
  7. linux centos livecd,定制自己的LiveCD,依托(centos)
  8. 世界上一共有多少种编程语言?
  9. 开发者的利器——windows公文包
  10. iCAN大赛520支创新项目向世界展示“中国智造”