wxapp django for wafer
name: wxapp
name: wafer function: save wxapp login session info
AppInfo
保存会话服务所需要的配置项。
Field | Type | Null | key | Extra |
---|---|---|---|---|
title | varchar(30) | NO | NO | 小程序名称 |
appid | varchar(200) | NO | 申请微信小程序开发者时,微信分配的 appId | |
secret | varchar(300) | NO | 申请微信小程序开发者时,微信分配的 appSecret | |
login_duration | int(11) | NO | 登录过期时间,单位为天,默认 30 天 | |
session_duration | int(11) | NO | 会话过期时间,单位为秒,默认为 2592000 秒(即30天) |
会话记录 SessionInfo
保存每个会话的数据。
Field | Type | Null | key | Extra |
---|---|---|---|---|
uuid | varchar(100) | NO | 会话 uuid | |
skey | varchar(100) | NO | 会话 Skey | |
create_time | datetime | NO | 会话创建时间,用于判断会话对应的 open_id 和 session_key 是否过期(是否超过 `cAppInfo` 表中字段 `login_duration` 配置的天数) | |
last_visit_time | datetime | NO | 最近访问时间,用于判断会话是否过期(是否超过 `cAppInfo` 表中字段 `session_duration` 的配置的秒数) | |
open_id | varchar(100) | NO | MUL | 微信服务端返回的 `open_id` 值 |
session_key | varchar(100) | NO | 微信服务端返回的 `session_key` 值 | |
user_info | varchar(2048) | YES | 已解密的用户数据 |
会话服务器提供 HTTP 接口来实现会话管理,下面是协议说明。
- 协议类型:
HTTP
- 传输方式:
POST
- 编码类型:
UTF-8
- 编码格式:
JSON
请求示例:
mina/#
处理用户登录请求。
请求数据:
code
- 微信小程序客户端获取的codeencrypt_data
- 微信小程序客户端获取的encryptedData,可为空iv
- 微信小程序客户端获取的解密iv,可为空app_id
- 所属小程序的id(数据库中存储的主键id)
使用示例:
function login_server(loginResult, userResult) {
var app = getApp();
wx.request({
url: config.s_url+'login',
data: {code: loginResult.code, encrypt_data: userResult.encryptedData, iv: userResult.iv, app_id:app.globalData.app_id},
method: 'POST',
success: function(res){
if(res.data.ok=='success') {
wx.setStorageSync('skey', res.data.data.skey);
wx.setStorageSync('uuid', res.data.data.uuid)
console.log(res.data.msg||'成功获取授权数据');
} else {
login();
}
},
fail: function() {
console.log('get skey error');
}
});
}
function login() {
wx.login({
success: function (loginResult) {
wx.getUserInfo({
success: function (userResult) {
//app.globalData.userInfo = userResult.userInfo;
login_server(loginResult, userResult);
},
fail: function () {
console.log('用户未同意授权');
var userResult = {encrypt_data:'', iv:''};
login_server(loginResult, userResult);
}
})
},
fail: function() {
tip('微信用户未登录,部分功能无法使用!');
}
});
}
响应数据:
ok
- 请求成功(success)或失败(fail)msg
- 成功提示或失败原因data
- {uuid
,skey
,user_info
,duration
}
使用 mina/auth
接口检查用户登录状态。
请求数据:
uuid
- 微信小程序客户端Storage[uuid]
skey
- 微信小程序客户端Storage[skey]
app_id
- 所属小程序的id(数据库中存储的主键id)
使用示例:
(每次业务操作均验证skey
、uuid
,建议在业务服务中向mina/auth
发起请求)
load_fan: function () {
var that = this;
var app_id= app.globalData.app_id;
var skey = wx.getStorageSync('skey');
var uuid = wx.getStorageSync('uuid');
wx.request({
url: config.base_url+'fan',
data: {app_id: app_id, skey: skey, uuid: uuid},
method: 'POST',
success: function(res){
if (res.data.ok == 'success') {
var f = res.data.f;
that.setData({user:f});
console.log(res.data.msg||'成功获取用户信息');
}
},
fail: function() {
util.tip('load user name and mobile fail');
}
});
}
响应数据:
ok
- 请求成功(success)或失败(fail)msg
- 成功提示或失败原因data
- {user_info
}