- 1:前端获取用户凭证code 传送请求获得openId(用户唯一标识)
在页面的Onlaunch 方法中,调用wx.login 方法
https://developers.weixin.qq.com/miniprogram/dev/api/wx.login.html
这一步获取登录凭证,通过凭证调用本地后台接口,获取用户openId sessionKey等,本地后台的接口调用方法参考第四步
注意点:
1:通常我们会把用户的session_key 存取到后台的session会话中,但是在微信小程序不会自动保存用户的session id, 这就需要将返回的session id 存在local storage中,当再次向后台请求时,在header 中带上 cookie , 看第二步图
2:that.globalData.info = res.data.data.string, 将一个object 里的string 赋值给globalData.info, 这个时候info的值仍然是indefined, 而 res.data.data是一个对象,会赋值成功,这是为什么呢?参考https://developers.weixin.qq.com/miniprogram/dev/framework/view/wxs/06datatype.html
- 2:前端获取用户信息并发送本地接口请求解码
注意点
1:当用户未授权登录时,此时不会弹框,需要跳出授权只能用<button open-type="getUserInfo"/>
2:向后台发送解码请求时,在header传 cookie, 标识是同一个会话,如图
- 3:后端获取用户 session_key 和 open id(.net)
注意点
1:如果获取成功, errcode不会返回
2: 使用Asp.net core Session
安装包:Microsoft.AspNetCore.Session
在startup.cs 中进行配置,添加服务和注入session,网上有参考,不赘述
3: 使用vs 进行build时,以管理员模式运行
4: 微信要求服务器使用TLS1.2协议,如何在windows中升级TLS1.2
更改注册表,网上有资源不赘述
- 4:后端进行加密信息解码
.net 加密解码回顾:
常见的加密算法包括md5,sha1,aes,base64, 而 AES是可逆的对称加密算法
Base64是一种编码方式,就是把一串二进制转换成另外一种二进制串
用于图片存储等,即把图片转换成一种二进制码,从而计算机能打印
AES:
.net core session
TLS1.2
JsonConvert 反序列化时, 如果遇到特殊字符时,会报错的解决方法
参考资源
https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html