微信小程序的鉴权过程主要包括以下几个步骤:
-
调用
wx.login()
生成临时登录凭证code
:- 小程序前端调用
wx.login()
接口,获取一个临时的登录凭证code
,该凭证的有效期为五分钟。
- 小程序前端调用
-
将
code
发送到开发者服务器:- 小程序前端通过
wx.request()
将code
发送到开发者服务器。
- 小程序前端通过
-
服务器端调用
auth.code2Session
接口:- 服务器端接收到
code
后,调用微信提供的auth.code2Session
接口,传入appid
、secret
、js_code
和grant_type
参数,换取用户的openid
和session_key
。
- 服务器端接收到
-
生成自定义登录态
token
:- 服务器端根据
openid
或session_key
生成自定义登录态(可以理解为token
),并将token
响应给前端。
- 服务器端根据
-
前端存储和携带
token
:- 前端将
token
存入Storage
中,并在后续的请求中携带token
。
- 前端将
-
后端解密验证:
- 后端在接收到请求时,通过
token
解密获取openid
,判断用户身份,并进行相应的逻辑处理。
- 后端在接收到请求时,通过
代码示例:
一、前端(微信小程序)
- 获取code并发送到后端
- 在小程序的登录页面:
Page({ onLoad: function () { wx.login({ success: res => { if (res.code) { wx.request({ url: 'https://your - server - url/login', method: 'POST', data: { code: res.code },