相信很多小伙伴之前用的接口是uni.getUserInfo来获取微信用户信息,但自4月13日起这个接口的返回参数不变,但开发者获取的userInfo为匿名信息。

(详情:小程序接口调整说明)

本人觉得这个更改虽然让接口的功能更加专注,但官方没有实现向下兼容,导致很多开发者需要费点心重新修改。

新版接口自那时起就新增uni.getUserProfile来获取用户信息,这让用户多了一个手动授权的步骤。

弹窗授权截图↓

目录

  • 一、uni.getUserProfile的必要参数
  • 二、uni.login和uni.getUserProfile的调用顺序
  • 三、方法更新

一、uni.getUserProfile的必要参数

使用前我们先来看看这个接口需要哪些参数


重点留意的就是 descsuccess 这两个重要参数,千万不要忘了加 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的顺序?相关推荐

  1. uni app 开发微信小程序及上线体验

    uni app 开发微信小程序及上线体验 项目创建及微信小程序AppId的申请 本次开发的是电商类的微信小程序,这里用到的是HBuilderX这个编辑器.之前用的Visual Studio Code ...

  2. 记录uni.app开发微信小程序中地图的使用,以及项目中的解决办法

    标题先讲一下需求:需要获取用户的地址信息以及经纬度,并在地图中展示时出来 uniapp官方也提供了api uni.getLocation(OBJECT) getLocation只能获取用户的经纬度,不 ...

  3. uni.app开发物联网小程序

    1.当切换页面的时候,容易与mqtt服务器断开连接,并报错 原因:在onLoad事件中,获取参数的时候使用异步获取,但是在事件里面还使用了这个参数,导致mqtt发布的时候,发了一个空主题,导致连接被断 ...

  4. 开发APP、微信小程序、网页,都需要什么?

    开发APP,微信小程序,网页都需要什么? 准备工作 前端开发 后端开发 技术整合 打包上线 结语 在开始介绍之前,我先罗列一下APP,微信小程序,网页的大比较 准备工作 云服务器,域名(需备案),SS ...

  5. json 微信小程序 筛选_GitHub - zhengyangkang/sl-filter: uni -app 一款使用简单的筛选组件,适配app、微信小程序、H5。...

    sl-filter 筛选 筛选组件,组件名:sl-filter dcloud插件市场地址 sl-filter 简介 一款使用简单的筛选组件,适配app.微信小程序.H5. 感谢分享 效果图 并列菜单 ...

  6. uniapp一套代码开发app和微信小程序

    为什么选择uniapp开发? 为什么选择uniapp进行开发? 1.uniapp对于独自开发是相当友好的,一套代码可以兼容app(安卓,ios),小程序,h5等,一定程度上降低了开发的成本,个人开发的 ...

  7. uniapp开发APP和微信小程序——使用高德实现定位

    在uniapp官网中明确说了可以使用高德地图来实现APP和微信小程序的定位. 在dcloud社区里大佬已经给出了实现方法(链接:uni-app 中使用微信小程序第三方 SDK 及资源汇总 - DClo ...

  8. uni开发微信小程序解决全局分享分销问题

    uni开发微信小程序解决全局分享分销问题 1. 需求 1.小程序内每个页面都要打开胶囊分享按钮并实现分销 2.分享功能应该是在用户登录之后才予以打开 3.不想做在每个页面都写分享钩子的傻逼操作 2.实 ...

  9. 21小时精通微信小程序开发(仿猫眼电影App、微信小程序问答)

    21小时精通微信小程序开发(仿猫眼电影App.微信小程序问答) 网盘地址:https://pan.baidu.com/s/1GTpPX4A1U-w_3i6k7lLztQ 密码: 5pcz 备用地址(腾 ...

最新文章

  1. 4、python简单线性回归代码案例(完整)_4、python简单线性回归代码案例(完整)...
  2. python就业方向及工资-Python的就业的方向和前景
  3. 服务的实例已在运行中_亚马逊首次把macOS引入云服务
  4. leetcode-121-买卖股票的最佳时机
  5. python控制手机自动刷新闻_python +adb控制手机自动化签到
  6. 用js做分页,点击下一页时,直接跳到了最后一页——Number()的妙用
  7. [数据结构-严蔚敏版]P64循环队列-队列的顺序存储结构
  8. GCD简介一:基本概念和Dispatch Queue
  9. [自用版]博客日志下拉文本框的使用
  10. hadoop+hive+hbase+spark补充内容
  11. phpcms v9 index.php,Phpcms V9后台登录地址修改方法
  12. phpstorm使用技巧
  13. HFSS天线设计流程
  14. Python:企业微信批量发工资条工具 -应用消息发送模块
  15. 【强化学习】⚠️手把手带你走进强化学习 3⚠️ OPP 算法实现月球登陆器 (Tensorflow2 版)
  16. 服务器e5v2v3性能差距,服务器CPU中的E3、E5的区别,及V2、V3、V5的区别
  17. 嵌入式面试常见问题(六)—各大公司面试题
  18. [矩阵论] 谱半径小于1,则I-A可逆
  19. 5月第2周安全回顾 Wi-Fi无线安全建议 微软修补4个漏洞
  20. Laravel教程 八:queryScope 和 setAttribute

热门文章

  1. ndarray数组基本结构和操作
  2. 基本排序算法 之六 ——归并排序
  3. 【ArcGIS Pro二次开发】(17):打开GDB、SHP、CAD等各种数据
  4. 苹果手机用计算机打不开,苹果手机打不开ban网,ban打不开
  5. Moho Pro - Mac 上一款专业的二维动画制作软件,强大的功能让你尽情发挥创意
  6. 四轴飞行器资料分享,几个G ,66个文件,如果链接失效请私聊我
  7. pbcms 文章新增 修改 实现自动百度推送
  8. java基础--Java入门
  9. Win10下不能识别Android的MTP模式
  10. 2020最新pycharm汉化安装(亲测有效)