小程序认证栈逻辑图

sequenceDiagram autonumber participant Client as 微信小程序 (Auth.js) participant Server as 开发者后端 (PHP Controller) participant WeChat as 微信 API 服务器 participant DB as 数据库 (WDB) Note over Client, WeChat: 第一阶段:身份交换与认证 (Auth Phase) Client->>Client: 调用 wx.login() 获取 js_code Client->>Client: 调用 wx.getUserProfile() 获取元数据 Client->>Server: POST /user/login2 (js_code, nickname, avatar) Server->>WeChat: GET jscode2session (AppID + AppSecret + js_code) WeChat-->>Server: 返回 OpenID & session_key Server->>DB: 检索用户 (SELECT by OpenID) alt 用户不存在 Server->>DB: wp_insert_user (创建新订阅者) else 用户存在 Server->>DB: wp_update_user (同步头像昵称) end Server->>Server: 生成随机令牌 (Token = MD5 + Uniqid) Server->>DB: update_user_meta (存储 Token 映射) Server-->>Client: 返回 { token, nickname, avatar } Client->>Client: wx.setStorageSync('token', token) Note over Client, DB: 第二阶段:业务授权流 (Business Phase) Client->>Server: POST /user/like (carry Token + post_id) Server->>DB: 校验 Token (SELECT user_id FROM usermeta) DB-->>Server: 返回关联 UserID rect rgb(56, 189, 248, 0.1) Note right of Server: 执行业务逻辑 (点赞入库) Server->>DB: INSERT INTO jiangqie_post_like Server-->>Client: 返回 { status: 'success' } end