会话(session)
小程序会话是通过wx.login()
建立,通过wx.checkSession()
检查是否过期。
wx.login()
会返回一个code
,把code
传给服务端,服务端用code``appid``appsecret
通过
https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code
就可以拿到openid``session_key
把session_key
用一定加密方式如sha1(session_key, mt_rand())
生成一个自己的sessionid,暂时叫它skey
把这三个数据存入redis(数据库,本地文件, memcache等存储引擎都行),并且把skey返回给客户端,客户端每次请求在请求头中带上skey就可以进行业务请求了
用户
用户是通过<button open-type="getUserInfo" bindGetUserInfo="getUserInfo">授权登陆</button>
点击之后就会弹出微信授权页面,同意后就会获得用户信息(如果通过wx.getSetting()检查已授权,可以直接调用wx.getUserInfo()
)
参数 | 类型 | 说明 |
---|---|---|
userInfo | OBJECT | 用户信息对象,不包含 openid 等敏感信息 |
rawData | String | 不包括敏感信息的原始数据字符串,用于计算签名。 |
signature | String | 使用 sha1( rawData + sessionkey ) 得到字符串,用于校验用户信息,参考文档 signature。 |
encryptedData | String | 包括敏感数据在内的完整用户信息的加密数据,详细见加密数据解密算法 |
iv | String | 加密算法的初始向量,详细见加密数据解密算法 |
然后把这些信息传给后端后端可以进行签名比对 和 敏感数据(unionid``openid
)解密
网友评论