位置: IT常识 - 正文

微信小程序【获取用户昵称头像和昵称(附源码)】(微信小程序获取位置信息的权限在哪里修改位置)

编辑:rootadmin
微信小程序【获取用户昵称头像和昵称(附源码)】 获取用户昵称头像和昵称wx.getUserProfilebindgetuserinfo登录过程

推荐整理分享微信小程序【获取用户昵称头像和昵称(附源码)】(微信小程序获取位置信息的权限在哪里修改位置),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:微信小程序获取手机号上限怎么办,微信小程序获取地理位置,微信小程序获取手机号上限怎么办,微信小程序获取手机号失败,微信小程序获取地理位置失败,微信小程序获取手机号收费,微信小程序获取手机号失败,微信小程序获取手机号,内容如对您有帮助,希望把文章链接给更多的朋友!

前端源码:https://pan.baidu.com/s/1uz2Gm2FMB-8RFVkhlHY3kQ 提取码:zb4w 后端源码:https://pan.baidu.com/s/1iPpLrXzWnpAsk5UsfKesGw 提取码:8bwm

小程序登录

小程序可以通过微信官方提供的登录能力方便地获取微信提供的用户身份标识,快速建立小程序内的用户体系。

说明调用 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 传到小程序客户端等服务器外的环境。

登录-小程序执行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 只能通过小程序端的登录来操作;wx.checkSession

检查登录态是否过期

wx.login

调用接口获取登录凭证(code)

wx.request

请求自己小程序服器,并且携带了code,userInfo信息

后台准备数据表DROP TABLE IF EXISTS `wx_user`;CREATE TABLE `wx_user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(63) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户名称', `password` varchar(63) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '用户密码', `gender` tinyint(3) NOT NULL DEFAULT 0 COMMENT '性别:0 未知, 1男, 1 女', `birthday` date NULL DEFAULT NULL COMMENT '生日', `last_login_time` datetime(0) NULL DEFAULT NULL COMMENT '最近一次登录时间', `last_login_ip` varchar(63) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '最近一次登录IP地址', `user_level` tinyint(3) NULL DEFAULT 0 COMMENT '用户层级 0 普通用户,1 VIP用户,2 区域代理用户', `nickname` varchar(63) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '用户昵称或网络名称', `mobile` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '用户手机号码', `avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '用户头像图片', `weixin_openid` varchar(63) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '微信登录openid', `status` tinyint(3) NOT NULL DEFAULT 0 COMMENT '0 可用, 1 禁用, 2 注销', `add_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间', `deleted` tinyint(1) NULL DEFAULT 0 COMMENT '逻辑删除', `share_user_id` int(11) NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE, UNIQUE INDEX `user_name`(`username`) USING BTREE) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户表' ROW_FORMAT = Compact;反向生成工具生成WxUser.javaWxUserMapper.javaWxUserMapper.xml准备封装前端传过来的数据UserInfoWxLoginInfo小程序服器配置导入微信小程序SDK<dependency> <groupId>com.github.binarywang</groupId> <artifactId>weixin-java-miniapp</artifactId> <version>3.3.0</version></dependency>application.ymloa: wx: app-id: wxf23b28b5e4ea4d6a app-secret: 212621faa31cdf0691367ea45b2b6041 msgDataFormat: JSONWxProperties微信小程序【获取用户昵称头像和昵称(附源码)】(微信小程序获取位置信息的权限在哪里修改位置)

封装oa.wx的数据

@Data@Configuration@ConfigurationProperties(prefix = "oa.wx")public class WxProperties {/** * 设置微信小程序的appId */private String appId;/** * 设置微信小程序的Secret */private String appSecret;/** * 消息数据格式 */private String msgDataFormat;}WxConfig

注册WxMaService

@Configurationpublic 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 { @Autowired private 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及sessionKey String sessionKey = null; String openId = null; try { WxMaJscode2SessionResult result = this.wxService.getUserService().getSessionInfo(code); sessionKey = result.getSessionKey();//session id openId = 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,并保存到数据库中 //如果存在,更新最后登录时间 //.... // token UserToken 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

登录-小程序

将oa-mini项目导入到微信开发者工具中,这里注意一定要修改appid。

点击"修改",将弹出一个对话框,请在对话框中输入你的小程序测试号appid

login.jsuser.loginByWeixin(res.userInfo).then(res => { app.globalData.hasLogin = true; wx.navigateBack({ delta: 1 })})user.jsfunction loginByWeixin(userInfo) { return new Promise(function(resolve, reject) { return login().then((res) => { //登录远程服务器 util.request(api.AuthLoginByWeixin, { code: res.code, userInfo: userInfo }, 'POST').then(res => { if (res.errno === 0) { //存储用户信息 wx.setStorageSync('userInfo', res.data.userInfo); wx.setStorageSync('token', res.data.token); resolve(res); } else { reject(res); } })

将userInfo,token数据保存到本地

util.jsfunction request(url, data = {}, method = "GET") { return new Promise(function (resolve, reject) { wx.request({ url: url, data: data, method: method, timeout:6000, header: { 'Content-Type': 'application/json', 'X-OA-Token': wx.getStorageSync('token') },

如果使用util.request函数,每次请求都会携带’X-OA-Token’: wx.getStorageSync(‘token’);而服器已经保存了所有的token,所以服器通过token区分每个客户端

emoji

mysql的utf8编码的一个字符最多3个字节,但是一个emoji表情为4个字节,所以utf8不支持存储emoji表情。但是utf8的超集utf8mb4一个字符最多能有4字节,所以能支持emoji表情的存储。

Linux系统中MySQL的配置文件为my.cnf。

Winows中的配置文件为my.ini。

[mysql]# 设置mysql客户端默认字符集default-character-set=utf8mb4[mysqld]#设置3306端口port = 3306# 设置mysql的安装目录basedir=D:\\tools\\mysql-5.7.23-winx64# 设置mysql数据库的数据的存放目录datadir=D:\\tools\\mysql-5.7.23-winx64\\data# 允许最大连接数max_connections=200# 服务端使用的字符集默认为8比特编码的latin1字符集character-set-server=utf8mb4# 创建新表时将使用的默认存储引擎default-storage-engine=INNODB
本文链接地址:https://www.jiuchutong.com/zhishi/295387.html 转载请保留说明!

上一篇:关于Pytorch中的train()和eval()(以及no_grad())(pytorch train())

下一篇:echarts的legend——图例样式的配置(echars legend)

  • 所谓的品牌到底是什么?(所谓的品牌到底指什么)

    所谓的品牌到底是什么?(所谓的品牌到底指什么)

  • 天玑900怎么样(天玑900怎么样和骁龙695)

    天玑900怎么样(天玑900怎么样和骁龙695)

  • 苹果12无线充电多少w(苹果12无线充电怎么用不了)

    苹果12无线充电多少w(苹果12无线充电怎么用不了)

  • qq同步助手有什么用吗(QQ同步助手有什么用)

    qq同步助手有什么用吗(QQ同步助手有什么用)

  • oppoa11x手机怎么投屏到电视(oppoA11x手机怎么把锁屏时间调到中间)

    oppoa11x手机怎么投屏到电视(oppoA11x手机怎么把锁屏时间调到中间)

  • iqoopro支持无线充电吗(iqoo是否支持无线充电)

    iqoopro支持无线充电吗(iqoo是否支持无线充电)

  • 微信小程序内存不足(微信小程序内存运行不足怎么处理)

    微信小程序内存不足(微信小程序内存运行不足怎么处理)

  • 苹果7手机悬浮球怎么关闭(苹果7手机悬浮窗怎么关闭)

    苹果7手机悬浮球怎么关闭(苹果7手机悬浮窗怎么关闭)

  • 2k144显示器配什么显卡(2k144hz显示器配什么显卡)

    2k144显示器配什么显卡(2k144hz显示器配什么显卡)

  • 华为荣耀30和p30有什么区别(华为荣耀30和荣耀30青春版手机壳一样吗)

    华为荣耀30和p30有什么区别(华为荣耀30和荣耀30青春版手机壳一样吗)

  • 华为p30pro指纹解锁不灵敏(华为P30pro指纹解锁丢失怎办)

    华为p30pro指纹解锁不灵敏(华为P30pro指纹解锁丢失怎办)

  • 拼多多是阿里巴巴旗下的吗(拼多多是阿里巴巴)

    拼多多是阿里巴巴旗下的吗(拼多多是阿里巴巴)

  • 钉钉收藏后的东西在哪里看(钉钉收藏后的东西怎么转发到微信)

    钉钉收藏后的东西在哪里看(钉钉收藏后的东西怎么转发到微信)

  • 移动硬盘磁头坏了能修吗(移动硬盘磁头坏了能导出数据吗)

    移动硬盘磁头坏了能修吗(移动硬盘磁头坏了能导出数据吗)

  • 200兆多少mbps(200兆多少钱一个月)

    200兆多少mbps(200兆多少钱一个月)

  • 手机内爆屏怎么处理(手机屏内爆了怎么办)

    手机内爆屏怎么处理(手机屏内爆了怎么办)

  • vivoy67转移软件到sd卡(vivo软件迁移)

    vivoy67转移软件到sd卡(vivo软件迁移)

  • 京东白条怎么解除(京东白条怎么解封)

    京东白条怎么解除(京东白条怎么解封)

  • 荣耀20s怎么更换输入法(荣耀20总成怎么换)

    荣耀20s怎么更换输入法(荣耀20总成怎么换)

  • OPPO k5怎么设置儿童空间(oppok5怎么设置双系统)

    OPPO k5怎么设置儿童空间(oppok5怎么设置双系统)

  • 拍拍可以用白条吗(拍拍不支持白条支付)

    拍拍可以用白条吗(拍拍不支持白条支付)

  • qqsiri建议怎么关闭(苹果qq建议怎么关闭)

    qqsiri建议怎么关闭(苹果qq建议怎么关闭)

  • qq怎么迁移聊天记录(qq怎么迁移聊天记录到另一台设备)

    qq怎么迁移聊天记录(qq怎么迁移聊天记录到另一台设备)

  • win10没有响度均衡怎么办? win10系统打开响度均衡的技巧(win10没有音效设置)

    win10没有响度均衡怎么办? win10系统打开响度均衡的技巧(win10没有音效设置)

  • vue 项目兼容 IE 浏览器(vue项目兼容ie9以上浏览器)

    vue 项目兼容 IE 浏览器(vue项目兼容ie9以上浏览器)

  • 微软大中华区董事长侯阳:今后每一家公司的每一个应用程序都将由人工智能来驱动(微软 大中华区 前副总裁)

    微软大中华区董事长侯阳:今后每一家公司的每一个应用程序都将由人工智能来驱动(微软 大中华区 前副总裁)

  • 非营利组织营利了怎么办
  • 企业办理银行承兑汇票的手续费用应计入什么账户
  • 一般增值税纳税人和小规模纳税人
  • 房地产中的存货是什么意思
  • 报销数字证书续费作财务凭证怎么做?
  • 冲减预付账款怎么记账
  • 工会经费所得税前扣除
  • 支付房屋租金计入什么会计科目
  • 官司赔偿费用需要发票吗
  • 高新技术企业研发费
  • 小微企业按季度报送财务报表
  • 个人所得税征收计算方法
  • 高新加计扣除怎么做账
  • 合并财务报表中的负债和股东权益
  • 会计的职责概述
  • 房地产销售代理是什么意思
  • 企业间实物交易是指
  • 金融企业贷款损失准备金税务管理
  • 别再等待别在徘徊是什么歌
  • 怎样做好固定资产管理工作
  • 公司名称变更重新刻章
  • vue实现打印
  • Ichetucknee河的海牛,佛罗里达州 (© Jennifer Adler/Alamy)
  • 带息应收票据会计处理,到期
  • 地税没申报罚款多少
  • php跨域提交表单
  • 残保金是应交税金吗
  • 残保金计提比例
  • 企业将存款汇往异地银行
  • 招待费发票怎么做分录
  • 小微企业具体指
  • 养老保险产生的利息怎么入账
  • 留底税额怎么入账
  • 帝国cms真的很好用
  • 帝国cms插件编写教程
  • 公司法人和经理的区别
  • 接受银行承兑汇票的流程
  • 其他应收款利息按什么计算
  • sql2005 数据同步方法
  • 汇算清缴补缴所得税摘要怎么写的
  • sqlserver2019配置
  • 固定资产税会折扣吗
  • 不同企业可以开专票吗
  • 以前年度损益调整属于哪类科目
  • 产品研发项目管理 系统 国外
  • 工商年报认缴时间过期了怎么办
  • 企业自建房屋建设方案
  • 结算本月职工工资,其中生产甲产品
  • 收到投资款现金流量
  • 成立教育培训司
  • mysql数据库增量备份命令
  • mysql字符集的作用
  • mysqlusing
  • win10没有显示
  • 新买的苹果电脑没有电
  • zmweb.exe是什么进程
  • win10右下角的图标点不开
  • win7c盘winsxs
  • js跨域8种解决方案
  • 持久化存储数据的方式
  • 批处理 >nul
  • perl脚本函数
  • bat读取文件内所有内容
  • 用Python设计一个游戏
  • Node.js中的construct
  • python对excel操作真的有提高吗
  • js函数内置函数
  • linux c 线程池
  • js给图片加水印
  • javascript entries
  • ug编程代码意思
  • JavaScript中的数据类型分为两大类
  • android数据存储实验报告
  • jquery入门
  • js中数组排序sort的用法
  • 详解各种汽油一吨等于多少升
  • 学费减免政策
  • 企业完税证明怎么查询打印
  • 12333热线时间
  • 公司欠税无力偿还怎么办
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设