小程序所有新进用户的昵称全部变成了“微信昵称”,当时我就

吓得我赶紧爬起来翻文档(需要代码直接往后翻)

wx.getUserProfile(Object object)

基础库 2.10.4 开始支持,低版本需做兼容处理。

获取用户信息。每次请求都会弹出授权窗口,用户同意后返回 userInfo。

getUserInfo获取用户信息,预计自2021年4月13日起,getUserInfo将不再弹出弹窗,并直接返回匿名的用户个人信息 即wx.getUserInfo接口的返回参数不变,但开发者获取的userInfo为匿名信息。


为优化用户的使用体验,平台将进行以下调整:

2021年2月23日起,若小程序已在微信开放平台进行绑定,则通过wx.login接口获取的登录凭证可直接换取unionID

2021年4月13日后发布的小程序新版本,无法通过wx.getUserInfo与获取用户个人信息(头像、昵称、性别与地区),将直接获取匿名数据(包括userInfo与encryptedData中的用户个人信息),获取加密后的openID与unionID数据的能力不做调整。此前发布的小程序版本不受影响,但如果要进行版本更新则需要进行适配。

新增getUserProfile接口(基础库2.10.4版本开始支持),可获取用户头像、昵称、性别及地区信息,开发者每次通过该接口获取用户个人信息均需用户确认。具体接口文档:《getUserProfile接口文档》

由于getUserProfile接口从2.10.4版本基础库开始支持(覆盖微信7.0.9以上版本),考虑到开发者在低版本中有获取用户头像昵称的诉求,对于未支持getUserProfile的情况下,开发者可继续使用getUserInfo能力。开发者可参考getUserProfile接口文档中的示例代码进行适配。

请使用了wx.getUserInfo接口或的开发者尽快适配。开发者工具1.05.2103022版本开始支持getUserProfile接口调试,开发者可下载该版本进行改造。

原因就像微信所说的,很多开发者在打开小程序时就通过组件方式唤起getUserInfo弹窗,如果用户点击拒绝,无法使用小程序,这种做法打断了用户正常使用小程序的流程,同时也不利于小程序获取新用户。

这里我会给出Uni-app的适配代码,针对CRMEB系统进行修复,各位同学举一反三(4.13号之前发布的正式包暂不影响)

1.修改pages/users/wechat_login/index.vue中关于微信登录的按钮

<button v-if=“canUseGetUserProfile && code” hover-class=“none” @tap=“getUserProfile”
class=“bg-green btn1”>微信登录
<button v-else hover-class=“none” open-type=“getUserInfo” @getuserinfo=“setUserInfo”
class=“bg-green btn1”>微信登录

2.默认data中添加canUseGetUserProfile: false,然后在加载页面调用的方法里面增加uni.getUserProfile的判断,是否显示新的按钮。

canUseGetUserProfile: false

if (uni.getUserProfile) {
this.canUseGetUserProfile = true
}

3.方法中新增getUserProfile方法用户获取用户信息

//小程序授权api替换 getUserInfo
getUserProfile() {
uni.showLoading({
title: ‘正在登录中’
});
let self = this;
Routine.getUserProfile()
.then(res => {
let userInfo = res.userInfo;
userInfo.code = this.code;
userInfo.spread_spid = app.globalData.spid; //获取推广人ID
userInfo.spread_code = app.globalData.code; //获取推广人分享二维码ID
Routine.authUserInfo(userInfo)
.then(res => {
if (res.data.key !== undefined && res.data.key) {
uni.hideLoading();
self.authKey = res.data.key;
self.isPhoneBox = true;
} else {
uni.hideLoading();
let time = res.data.expires_time - self.Cache.time();self.Cache.time(); self.Cache.time();self.store.commit(‘LOGIN’, {
token: res.data.token,
time: time
});
this.getUserInfo()
}
})
.catch(res => {
uni.hideLoading();
uni.showToast({
title: res.msg,
icon: ‘none’,
duration: 2000
});
});
})
.catch(res => {
uni.hideLoading();
});
},

4.然后在libs/routine.js中增加getUserProfile方法

/**

  • 新版小程序获取用户信息 2021 4.13微信小程序开始正式启用
    */
    getUserProfile(code) {
    return new Promise((resolve, reject) => {
    uni.getUserProfile({
    lang: ‘zh_CN’,
    desc: ‘用于完善会员资料’, // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
    success(user) {
    if (code) user.code = code;
    resolve({
    userInfo: user,
    islogin: false
    });
    },
    fail(res) {
    reject(res);
    }
    })
    })
    }
    这里要注意
    desc为必填项,并且将来有可能会将信息提示在弹窗内,所以要谨慎填写;
    getUserProfileAPI不是通过open-type 吊起 而是使用 @tap="getUserProfile"bindtap="getUserProfile" 调用的,且必须为直接调用,不能通过其他函数回调调用。否则会报getUserProfile:fail can only be invoked by user TAP gesture.错误

后台代码修改地方比较少集中在app/services/wechat/RoutineServices.php文件中

if (!isset($userInfoCong[‘openid’])) {
throw new ValidateException(‘openid获取失败’);
}

if (!isset($userInfoCong[‘openid’])) {
throw new ValidateException(‘openid获取失败’);
}
userInfo[‘unionId’] = isset(userInfo[′unionId′]=isset(userInfoCong[‘unionid’]) ? $userInfoCong[‘unionid’] : ‘’;
userInfo[‘openId’] =userInfo[′openId′]=openid = $userInfoCong[‘openid’];

微信小程序getUserProfile详解相关推荐

  1. 微信小程序点击按钮弹出弹窗_转载 | 广东大学生就业创业微信小程序操作流程详解(一)...

    广东大学生就业创业微信小程序 操作流程详解(一) 转眼来到10月,炎炎夏日也阻挡不了青春的忙碌,同学萌走出校园,迈向社会. 在这段时间,同学们不仅要准备毕业论文,应对毕业答辩,还需要兼顾各种毕业手续的 ...

  2. 微信小程序python flask_Python Flask 搭建微信小程序后台详解

    前言: 近期需要开发一个打分的微信小程序,涉及到与后台服务器的数据交互,因为业务逻辑相对简单,故选择Python的轻量化web框架Flask来搭建后台程序.因为是初次接触小程序,经过一番摸索和尝试,个 ...

  3. 微信小程序版本管理详解

    本来觉得没必要写版本管理的文章. 奈何微信的官方文档真的是太不友好了!!! 一顿操作猛如虎.(请原谅我知识轻薄). 本文只是我这几天操作过的,一些个人理解总结,如果,有什么不对的,欢迎大家纠正我的错误 ...

  4. flask ajax小程序,Python Flask 搭建微信小程序后台详解

    后台程序返回了数据后,第三步就是小程序该怎么接收返回数据并进行相关业务逻辑处理. 小程序接收返回数据.Python-Flask向小程序返回了JSON格式的数据后,小程序的wx.requset()函数里 ...

  5. Python Flask 搭建微信小程序后台详解

    前言: 近期需要开发一个打分的微信小程序,涉及到与后台服务器的数据交互,因为业务逻辑相对简单,故选择Python的轻量化web框架Flask来搭建后台程序.因为是初次接触小程序,经过一番摸索和尝试,个 ...

  6. 一、微信小程序开发详解

    目录 1.什么是小程序? 2.小程序可以干什么? 3.相关资料 第一个小程序 一.申请帐号 二.测试号申请 三.安装开发工具 四.你的第一个小程序 五.编译预览 六.目录结构 七.JSON 配置 八. ...

  7. 企业级微信小程序实战详解

    项目地址:github.com/wudiufo/WeC- 完成效果展示:www.bilibili.com/video/av488- 小爱心是否点赞组件 components/like 思路: like ...

  8. collapse 微信小程序_详解优化你的微信小程序

    这篇文章主要给大家介绍了关于微信小程序瘦身的相关资料,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧. 前言 众所周知,微信小程序在发布的时候,对提交的代码有1M大小的 ...

  9. 微信小程序(详解及简单使用)

    目录 1.结构分布 1.框架全局文件 1.1.pages( 页面路径列表 ) 1.2.window( 全局的默认窗口表现 ) 1.3.tabBar( 底部 tab 栏的表现 ) 2.使用view进行页 ...

  10. 15、微信小程序登录详解

    1.登录流程 1.获取临时登陆凭证 code (code -- 限频接口),wx.login() 2.前端向服务器发送 ajax 请求( wx.request() ),该请求需要携带三个参数:code ...

最新文章

  1. C++走向远洋——61(项目一、排序函数模板)
  2. JS循环精灵图背景-遍历背景图片
  3. 出参传递数组指针_C语言指针重难点详解
  4. rsync命令使用方法
  5. Redis的内存淘汰策略
  6. 聊聊统一身份认证服务
  7. Android之Android studio Gradle sync failed: Unknown host ‘services.gradle.org
  8. dll 重新加密打包的问题
  9. Lua中调用C/C++函数 (转)
  10. python如何跳出函数_python如何跳出函数
  11. 2020年下半年系统集成项目管理工程师上午试题解析(三)
  12. 【Android】SDK环境变量配置
  13. 权力纷争必须上演公章大战?其实duck不必
  14. 第六次作业——潘芊睿
  15. 人工智能的就业方向有哪些?
  16. 论文笔记2.5D lightweight RIU-Net for automatic liver and tumor segmentation from CT
  17. Spark分布式计算框架之SparkStreaming+kafka
  18. [python]遍历字典dict的几种方法
  19. 关于结构化,半结构化,非结构化数据的理解
  20. jQuery事件总结

热门文章

  1. linux开发员用游戏本吗,为什么很多程序员使用thinkpad而不是同等价位的游戏本呢?...
  2. 【爬坑记录】记录搭建fabric 遇到的问题-network e2ecli_default not found
  3. 四种常见的post请求中的参数形式
  4. 电脑可以上网,但是仍然显示无网络连接
  5. 2020牛客暑期多校训练营(第九场)I .The Crime-solving Plan of Groundhog
  6. AppleStore 原始ipa文件提取
  7. 利用telemetry进行权限维持
  8. 安装程序无法打开注册表项 UNKNOWN\Components\…的简单解决办法
  9. python xlsx转xls_Python将xls转换成xlsx
  10. NVIDIA Jetson TK1学习与开发——简介(针对嵌入式系统应用释放 GPU 的潜能)