微信小程序后台交互-个人中心06
目录
1.获取用户昵称和头像
2.登录过程
3.登录-小程序
4.后台
1.获取用户昵称和头像
小程序登录https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html
登录过程:
说明
调用 wx.login() 获取 临时登录凭证code ,并回传到开发者服务器。
调用 auth.code2Session 接口,换取 用户唯一标识 OpenID 、 用户在微信开放平台帐号下的唯一标识UnionID(若当前小程序已绑定到微信开放平台帐号) 和 会话密钥 session_key。
之后开发者服务器可以根据用户标识来生成自定义登录态,用于后续业务逻辑中前后端交互时识别用户身份。
注意事项
会话密钥
session_key
是对用户数据进行 加密签名 的密钥。为了应用自身的数据安全,开发者服务器不应该把会话密钥下发到小程序,也不应该对外提供这个密钥。临时登录凭证 code 只能使用一次
appId 作用说明
appid 是微信账号的唯一标识,这个是固定不变的; 如果了解微信公众号开发的就需要注意一下,小程序的appid 和 公众号的appid 是不一致的
session_key 功能说明 微信客户端通过wx.getUserInfo()获取用户的信息 后台有时候也需要获取微信客户端的用户信息,因此,就需要利用session_key这个秘钥来从微信平台中获取 官方文档原文 签名校验以及数据加解密涉及用户的会话密钥 session_key。 开发者应该事先通过 wx.login 登录流程获取会话密钥 session_key 并保存在服务器。为了数据不被篡改,开发者不应该把 session_key 传到小程序客户端等服务器外的环境。
2.登录过程
执行wx.login 登录获取小程序端的code
服务端根据code去微信端获取session_key并且缓存;同时生成access_token 保存在小程序端,维持登录状态;
小程序端请求服务端用户数据时,先wx.checkSession,有效就通过access_token 确定用户,找到session_key;无效就执行wx.login重新登录重新生成access_token,服务端重新获取session_key;
小程序端长时间不使用,服务端的session_key会失效,无法再用session_key去微信端获取数据,需要小程序端重新执行登录操作; 服务端要获取session_key 只能通过小程序端的登录来操作;
3.登录-小程序
4.后台
小程序服器配置
导入微信小程序SDK
<dependency><groupId>com.github.binarywang</groupId><artifactId>weixin-java-miniapp</artifactId><version>3.3.0</version> </dependency>
application.yml
oa:wx:app-id: wxf23b28b5e4ea4d6aapp-secret: 212621faa31cdf0691367ea45b2b6041msgDataFormat: JSON
WxProperties
封装oa.wx的数据
@Data @Configuration @ConfigurationProperties(prefix = "oa.wx") public class WxProperties {/*** 设置微信小程序的appId*/private String appId;/*** 设置微信小程序的Secret*/private String appSecret;/*** 消息数据格式*/private String msgDataFormat; }
WxConfig
注册WxMaService
@Configuration public class WxConfig {@Autowiredprivate WxProperties properties; @Beanpublic WxMaConfig wxMaConfig() {WxMaInMemoryConfig config = new WxMaInMemoryConfig();config.setAppid(properties.getAppId());config.setSecret(properties.getAppSecret());config.setMsgDataFormat(properties.getMsgDataFormat());return config;} @Beanpublic WxMaService wxMaService(WxMaConfig maConfig) {WxMaService service = new WxMaServiceImpl();service.setWxMaConfig(maConfig);return service;} }
WxAuthController
@RequestMapping("/wx/auth") public class WxAuthController {@Autowiredprivate WxMaService wxService;@PostMapping("login_by_weixin")public Object loginByWeixin(@RequestBody WxLoginInfo wxLoginInfo, HttpServletRequest request) { //客户端需携带code与userInfo信息String code = wxLoginInfo.getCode();UserInfo userInfo = wxLoginInfo.getUserInfo();if (code == null || userInfo == null) {return ResponseUtil.badArgument();}//调用微信sdk获取openId及sessionKeyString sessionKey = null;String openId = null;try {WxMaJscode2SessionResult result = this.wxService.getUserService().getSessionInfo(code);sessionKey = result.getSessionKey();//session idopenId = result.getOpenid();//用户唯一标识 OpenID} catch (Exception e) {e.printStackTrace();} if (sessionKey == null || openId == null) {log.error("微信登录,调用官方接口失败:{}", code);return ResponseUtil.fail();}else{log.info("openId={},sessionKey={}",openId,sessionKey);}//根据openId查询wx_user表//如果不存在,初始化wx_user,并保存到数据库中//如果存在,更新最后登录时间//....// tokenUserToken userToken = null;try {userToken = UserTokenManager.generateToken(user.getId());} catch (Exception e) {log.error("微信登录失败,生成token失败:{}", user.getId());e.printStackTrace();return ResponseUtil.fail();}userToken.setSessionKey(sessionKey);log.info("SessionKey={}",UserTokenManager.getSessionKey(user.getId()));Map<Object, Object> result = new HashMap<Object, Object>();result.put("token", userToken.getToken());result.put("tokenExpire", userToken.getExpireTime().toString());result.put("userInfo", userInfo);//.... log.info("【请求结束】微信登录,响应结果:{}", JSONObject.toJSONString(result)); return ResponseUtil.ok(result);}
响应给客户端数据有:
token userInfo
微信小程序后台交互-个人中心06相关推荐
- 微信小程序--后台交互/wx.request({})方法/渲染页面方法 解析
小程序的后台获取数据方式get/post具体函数格式如下:wx.request({}) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ...
- python开发微信小程序-Django微信小程序后台开发教程的实现
1 申请小程序,创建hello world小程序 2 添加交互框和按钮 index. wxml cal {{ result }} index.wxss /**index.wxss**/ .input ...
- Django微信小程序后台开发教程
Django微信小程序后台开发教程 1 申请小程序,创建hello world小程序 2 添加交互框和按钮 3 在服务器配置hello django 4 实现计算器接口 5 配置服务器将后端与微信小程 ...
- 微信小程序python flask_Python Flask 搭建微信小程序后台详解
前言: 近期需要开发一个打分的微信小程序,涉及到与后台服务器的数据交互,因为业务逻辑相对简单,故选择Python的轻量化web框架Flask来搭建后台程序.因为是初次接触小程序,经过一番摸索和尝试,个 ...
- 鸿蒙与微信小程序,鸿蒙远程交互应用 vs 微信小程序远程交互应用
原标题:鸿蒙远程交互应用 vs 微信小程序远程交互应用 鸿蒙的远程交互组件应用相对复杂,访问网络时,首先要配置网络权限,华为官方文档有问题,在此引用我老师配置的模板,见附件. 过程: 导入鸿蒙的网络请 ...
- 基于腾讯云服务器部署微信小程序后台服务(Python+Django)
一 前言 微信小程序,相信大家早已熟知,它是一种无需下载安装即可使用的轻型应用,具有跨平台和接近Native App性能体验的优势.从开发模式上说,它是前后端分离的,微信小程序负责实现前端应用,后端服 ...
- .Net Webapi SignalR与微信小程序的交互
.Net Webapi SignalR与微信小程序的交互 一.SignalR与Webapi 1.SignalR的安装: Signalr与跨域仅需要安装两个开源库 Microsoft.Owin.Cors ...
- 微信小程序——微信小程序后台自定义分析,数据准确性分析
序 由于公司小程序产品大多为信息流产品,所以对小程序图文的数据准确性,精细度有较高的需求,以便编辑人员通过对数据的分析,可以针对性的编写图文,提高爆文数量. 问题描述 公司自己是有一个统计平台,对小程 ...
- 【delphi】开发微信小程序后台控件(一)(含源代码、演示程序、控件使用帮助)
1. 前言 微信小程序已经非常普及,但是遗憾的是官方提供的 SDK 等没有Delphi语言的,这样使用Delphi语言开发微信小程序后台就相对比较困难,需要研究平台API,费时费力,特别是调试API很 ...
最新文章
- Mybatis原理分析一 从JDBC到Mybaits
- Spring之数据库操作
- Entity Framewrok 7beta7中不同版本sql server自动生成分页sql语句的问题
- win7建立wifi热点
- VC中的#pragma指令的用法
- shell变量/环境变量和set/env/export用法_转
- Java中的堆分配参数总结《对Java的分析总结》(二)
- scrapy 去重策略修改
- 项目背景一般写什么_项目申报整体框架规划思路,提高你的书写逻辑!
- NYOJ题目66-分数拆分
- CentOS系统简介
- cf服务器人最多,玩家实测CF各大区在线人数排名 你的区排第几?
- 前端class的中括号用法
- python翻转课堂_翻转课堂
- 柴静《看见》发布会。。。
- sqlserver修改主键id自增
- mac word 2016中文输入问题解决
- QUIC传输协议设计
- 【Linux】虚拟机VMware的Ubuntu使用vi指令的方向键和backspace空格键乱码
- 计算机的外存与I/O设备
热门文章
- OMS系统是什么?主要功能和优势有哪些?
- sonarQube8.9使用及branch插件使用
- wma转换成mp3格式,wma转mp3快速完成
- java keytool 代码_java中Keytool的使用总结
- wxwidget编译安装_win7下wxwidgets开发环境配置
- 逆变器运用到的c语言算法,详解六种逆变电源的控制算法
- 七夕到了,程序员怎么过七夕
- cl.zk0.info/index.php,兄弟连区块链入门到精通教程btcpool矿池源码分析环境搭建
- BCGControlBar使用说明
- 30个你应该在2023年里使用的JavaScript 动画库