小程序认证栈逻辑图
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