课程地址:
https://study.163.com/course/courseMain.htm?courseId=1004873017
本课项目地址:
https://github.com/wechatdeveloper/WechatVideoCourse
课程目标:
使用数据容器(Container)管理微信调用凭证(AccessToken);
SDK 帮助开发者,只需要关注和微信之间的接口调用 ,不需要过多的关心AccessToken过期问题。
微信凭证类型:
AccessToken :微信接口调用 的凭据,是用于微信服务器和开发者服务器之间的接口调用的凭据
JsTicket:用户移动端调用微信API的凭据
安全说明:凭据不可以存储在Cookie、URL 等明文中
凭证特征:
- 需要通过AppId , AppSecret获取AccessToken
- 具有一定的过期时间,如7200秒
- 可以被强制刷新、更新
- AccessToken 需要开发者自行管理
- 每天从微信服务器获取的次数是有限制的
微信公众号AccessToken获取说明:
https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Get_access_token.html
数据容器(Container)设计目标:
- 自动处理凭据过期、失效、重新获取问题
- 支持缓存
- 详细参考:设计图解
SDK中AccessToken的方法:
- Senparc.Weixin.MP.Containers.AccessTokenContainer.GetAccessToken(AppId);
- Container对AccessToken进行管理:获取、失效后的更新
- 由于SDK对AccessToken进行了高度的封装、管理;所以在调用微信接口的时候,不需要每次都先获取AccessToken,只需要传递AppId参数即可,如下
1 //获取微信用户信息 2 var userInfo = Senparc.Weixin.MP.AdvancedAPIs.UserApi.Info(AppId, openId); 3 string strNickName = userInfo.nickname; 4 string strGender = userInfo.sex == 1 ? "先生" : "女士"; 5 6 //推送客服消息,给用户 7 Senparc.Weixin.MP.AdvancedAPIs.CustomApi.SendText(AppId, openId, "你好,{0} {1}".FormatWith(strNickName, strGender));
- SDK 均提供了对应的异步接口,如:CustomApi.SendTextAsync
用户收到的客服消息效果:
微信公众号客服消息的推送规则:
- 用户在5分钟内和公众号有过交互
- 在用户没有回复的情况下,公众号不可以连续推送超过20条的客服消息