uni-app开发微信小程序常见问题(更新版):uni.getUserProfile要怎么写?uni.login和uni.getUserProfile的顺序?
相信很多小伙伴之前用的接口是uni.getUserInfo来获取微信用户信息,但自4月13日起这个接口的返回参数不变,但开发者获取的userInfo为匿名信息。
(详情:小程序接口调整说明)
本人觉得这个更改虽然让接口的功能更加专注,但官方没有实现向下兼容,导致很多开发者需要费点心重新修改。
新版接口自那时起就新增uni.getUserProfile来获取用户信息,这让用户多了一个手动授权的步骤。
弹窗授权截图↓
目录
- 一、uni.getUserProfile的必要参数
- 二、uni.login和uni.getUserProfile的调用顺序
- 三、方法更新
一、uni.getUserProfile的必要参数
使用前我们先来看看这个接口需要哪些参数
重点留意的就是 desc 和 success 这两个重要参数,千万不要忘了加 desc!!!
在success回调函数中就可以写我们的ajax请求向后端传送加密信息和code和用户信息等内容
示例代码如↓
uni.getUserProfile({desc:'获取微信用户的昵称与头像',success:function(resp){let nickName = resp.userInfo.nickName;let avatarUrl = resp.userInfo.avatarUrl;//console.log(nickName);//console.log(avatarUrl);let data={nickname:nickName,photo:avatarUrl};uni.request({"url": url, "method": "POST", "header": { token: uni.getStorageSync('token') },"data": data, success: function(resp) {}});}
})
二、uni.login和uni.getUserProfile的调用顺序
在实际开发的过程中,很多同学会选择在uni.login中包裹uni.getUserProfile,来保证获取code和获取的encryptedData顺序,从而避免解密失败
但实际上在调用uni.login获取code后,再调用uni.getUserProfile,可能会失败,触发fail函数,error msg: ''getUserProfile:fail can only be invoked by user TAP gesture"。所以正确的调用顺序是先调用uni.getUserProfile在其中包裹uni.login
示例代码如↓
uni.getUserProfile({desc:'获取微信用户的昵称与头像',success:function(resp){uni.login({success:function(res){let code = res.code;//console.log(res.code);let nickName = resp.userInfo.nickName;let avatarUrl = resp.userInfo.avatarUrl;//console.log(nickName);//console.log(avatarUrl);let data={code:code,nickname:nickName,photo:avatarUrl,registerCode:that.registerCode}; uni.request({"url": url, "method": "POST", "header": { token: uni.getStorageSync('token') },"data": data, success: function(resp) {}});},fail:function(){console.log("fail use getUserProfile");}}) }
})
三、方法更新
上面的方法我看到有同学留言说用不了,我试过还是能用的,为了适配大多数同学,我这里再给出一个方法来获取,不再嵌套使用,还是正常先调用 uni.login 再调用 uni.getUserProfile 方法。但这里需要注意!在微信开发者工具中测试时需要以真机调试才能获取用户资料!!
uni.login({provider: 'weixin',success: function(resp) {let code = resp.code;that.code=code}
});
uni.getUserProfile({desc: '获取用户信息',success: function(resp) {let nickName = resp.userInfo.nickName;let avatarUrl = resp.userInfo.avatarUrl;// console.log(nickName);// console.log(avatarUrl);let data = {code: that.code,nickname: nickName,photo: avatarUrl,registerCode: that.registerCode};uni.request({"url": url, "method": "POST", "header": { token: uni.getStorageSync('token') },"data": data, success: function(resp) {}});}
});
本次分享到此结束,有问题的欢迎评论区留言!
uni-app开发微信小程序常见问题(更新版):uni.getUserProfile要怎么写?uni.login和uni.getUserProfile的顺序?相关推荐
- uni app 开发微信小程序及上线体验
uni app 开发微信小程序及上线体验 项目创建及微信小程序AppId的申请 本次开发的是电商类的微信小程序,这里用到的是HBuilderX这个编辑器.之前用的Visual Studio Code ...
- 记录uni.app开发微信小程序中地图的使用,以及项目中的解决办法
标题先讲一下需求:需要获取用户的地址信息以及经纬度,并在地图中展示时出来 uniapp官方也提供了api uni.getLocation(OBJECT) getLocation只能获取用户的经纬度,不 ...
- uni.app开发物联网小程序
1.当切换页面的时候,容易与mqtt服务器断开连接,并报错 原因:在onLoad事件中,获取参数的时候使用异步获取,但是在事件里面还使用了这个参数,导致mqtt发布的时候,发了一个空主题,导致连接被断 ...
- 开发APP、微信小程序、网页,都需要什么?
开发APP,微信小程序,网页都需要什么? 准备工作 前端开发 后端开发 技术整合 打包上线 结语 在开始介绍之前,我先罗列一下APP,微信小程序,网页的大比较 准备工作 云服务器,域名(需备案),SS ...
- json 微信小程序 筛选_GitHub - zhengyangkang/sl-filter: uni -app 一款使用简单的筛选组件,适配app、微信小程序、H5。...
sl-filter 筛选 筛选组件,组件名:sl-filter dcloud插件市场地址 sl-filter 简介 一款使用简单的筛选组件,适配app.微信小程序.H5. 感谢分享 效果图 并列菜单 ...
- uniapp一套代码开发app和微信小程序
为什么选择uniapp开发? 为什么选择uniapp进行开发? 1.uniapp对于独自开发是相当友好的,一套代码可以兼容app(安卓,ios),小程序,h5等,一定程度上降低了开发的成本,个人开发的 ...
- uniapp开发APP和微信小程序——使用高德实现定位
在uniapp官网中明确说了可以使用高德地图来实现APP和微信小程序的定位. 在dcloud社区里大佬已经给出了实现方法(链接:uni-app 中使用微信小程序第三方 SDK 及资源汇总 - DClo ...
- uni开发微信小程序解决全局分享分销问题
uni开发微信小程序解决全局分享分销问题 1. 需求 1.小程序内每个页面都要打开胶囊分享按钮并实现分销 2.分享功能应该是在用户登录之后才予以打开 3.不想做在每个页面都写分享钩子的傻逼操作 2.实 ...
- 21小时精通微信小程序开发(仿猫眼电影App、微信小程序问答)
21小时精通微信小程序开发(仿猫眼电影App.微信小程序问答) 网盘地址:https://pan.baidu.com/s/1GTpPX4A1U-w_3i6k7lLztQ 密码: 5pcz 备用地址(腾 ...
最新文章
- 4、python简单线性回归代码案例(完整)_4、python简单线性回归代码案例(完整)...
- python就业方向及工资-Python的就业的方向和前景
- 服务的实例已在运行中_亚马逊首次把macOS引入云服务
- leetcode-121-买卖股票的最佳时机
- python控制手机自动刷新闻_python +adb控制手机自动化签到
- 用js做分页,点击下一页时,直接跳到了最后一页——Number()的妙用
- [数据结构-严蔚敏版]P64循环队列-队列的顺序存储结构
- GCD简介一:基本概念和Dispatch Queue
- [自用版]博客日志下拉文本框的使用
- hadoop+hive+hbase+spark补充内容
- phpcms v9 index.php,Phpcms V9后台登录地址修改方法
- phpstorm使用技巧
- HFSS天线设计流程
- Python:企业微信批量发工资条工具 -应用消息发送模块
- 【强化学习】⚠️手把手带你走进强化学习 3⚠️ OPP 算法实现月球登陆器 (Tensorflow2 版)
- 服务器e5v2v3性能差距,服务器CPU中的E3、E5的区别,及V2、V3、V5的区别
- 嵌入式面试常见问题(六)—各大公司面试题
- [矩阵论] 谱半径小于1,则I-A可逆
- 5月第2周安全回顾 Wi-Fi无线安全建议 微软修补4个漏洞
- Laravel教程 八:queryScope 和 setAttribute