ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

货运搬家小程序从0到1(四):微信登录,从 mock 到 code2session 的平滑切换

货运搬家小程序从0到1(四):微信登录,从 mock 到 code2session 的平滑切换 上篇计价引擎跑通。这篇解决所有小程序项目的第一只拦路虎登录。本地开发没有正式 appid、没配合法域名怎么让业务先跑起来微信登录的标准流程先复习官方流程只有三步小程序端 uni.login() 拿到临时 code → 后端调 code2session带 appid secret code → 微信返回 openid后端按 openid 找/建用户发自己的 token问题在于code2session 需要正式的 appid 和 secret而且本地开发的 code 是微信开发者工具/真机才能产生的。总不能为了跑通下单流程先去申请资质、配置域名吧业务开发不能被登录卡住。mock 方案登录接口签名不变内部可切换接口从头到尾只有一个POST /api/auth/login { code: xxx } → { token: eyJhbGci..., userId: 1, role: USER }mock 模式下后端不调微信直接把 code 当作用户标识publicLoginResplogin(Stringcode){// mock 模式openid mock_ codecode 即用户身份Stringopenidmock_code;UseruseruserMapper.selectByOpenid(openid);if(usernull){usernewUser();user.setOpenid(openid);userMapper.insert(user);}StringtokenJwtUtil.create(user.getId(),USER);returnnewLoginResp(token,user.getId(),USER);}小程序端配合首次启动生成一个随机mock_code存进 storage之后每次启动用它登录——于是每个用户有稳定身份刷新页面不掉登录整个业务链路下单、支付、抢单、钱包全部能跑。切换到真实登录只改一个函数上线时把 mock 逻辑换成真调 code2session// 真实模式Stringurlhttps://api.weixin.qq.com/sns/jscode2session?appidappIdsecretsecretjs_codecodegrant_typeauthorization_code;// 解析返回的 openid后面逻辑完全一样接口签名、返回结构、JWT 生成、前端代码——一行都不用动。用配置开关控制模式kuaiban.auth.mock: true/false测试环境永远走 mock生产走真实。两个实践建议mock 用户也要真实入库不要内存里造用户直接进 user 表。这样测试产生的订单、流水数据结构完全真实后期不用清洗driver 角色复用同一套 token司机端身份用role字段区分USER/DRIVER同一个 JWT 体系后面鉴权拦截器一篇会讲本篇成果登录闭环跑通小程序启动自动登录、token 持久化、请求头自动携带。下一篇写 JWT——为什么我不用 Spring Security手写 200 行鉴权怎么写才干净。
返回列表