头像昵称弹窗弹出条件:button授权按钮 + uni.getUserProfile API请求

简单唤醒示范案例:

1.H5部分

<text class="loginsubmitbox-text"  v-on:tap="wechatLogin">微信一键登录</text>

2.JS部分

wechatLogin(){// 获取用户信息uni.getUserProfile({desc: '获取你的昵称、头像、地区及性别',success: res => {console.log(res);console.log(1);},fail: res => {console.log(2);console.log(res)//拒绝授权uni.showToast({title: '您拒绝了请求,不能正常使用小程序',icon: 'error',duration: 2000});return;}});
}

注意事项:

不能嵌入其他API内调用,一定要在调用的方法中第一层执行(优先执行uni.getUserProfile

正确做法:必须第一步用户点击按钮,第二步调取uni.getUserProfile API(调取uni.getUserProfile操作与用户操作紧密联系)

错误做法:第一步用户点击按钮,第二步调uni.checkSession ,第三步才调取uni.getUserProfile API(中间隔着其他操作会导致调取uni.getUserProfile API授权弹窗失败)

实战应用中的授权登录示范案例:

1.错误写法:(两点错误:1.uni.checkSession中嵌入uni.getUserProfile会导致头像授权弹窗拉不起来;2.uni.login应该在uni.getUserProfile之前执行,否则会导致秘钥和密文不匹配从而解密失败)

wechatLogin() {//检查登录态是否过期uni.checkSession({provider: 'weixin',success: function(loginRes) {console.log('checkSession成功', loginRes);},fail: function(loginRes) {console.log('checkSession失败', loginRes);// 获取用户信息uni.getUserProfile({desc: '获取你的昵称、头像、地区及性别',success: res => {console.log('获取你的昵称、头像', res);//重新登录uni.login({provider: 'weixin',success: function(loginRes) {console.log('login重新登录', loginRes);// 登录请求// api.apiPost("/api/member/wechatappauth", {//   jscode: loginRes.code,// }, (res) => {//    console.log(res)//  if (res.code == 0) {//    } else {//      uni.showModal({//           title: '提示',//            content: res.msg,//         });//   }// })},fail: function(loginRes) {console.log(loginRes)}});},fail: res => {console.log(2);console.log(res)//拒绝授权uni.showToast({title: '您拒绝了请求,不能正常使用小程序',icon: 'error',duration: 2000});return;}});},});
}

2.正确写法:(uni.getUserProfile在最外层直接调用,这样就成功唤醒授权弹窗;且uni.login要比uni.getUserProfile先执行)

wechatLogin() {//检查登录态是否过期uni.checkSession({provider: 'weixin',success: function(loginRes) {console.log('checkSession成功',loginRes);},fail: function(loginRes) {console.log('checkSession失败',loginRes);},});//重新登录let jsCode = ''uni.login({provider: 'weixin',success: function(loginRes) {jsCode = loginRes.code;console.log('login重新登录',{jscode: loginRes.code,jscodeinfo:res});},fail: function(loginRes) {console.log(loginRes)}});// 获取用户信息uni.getUserProfile({desc: '获取你的昵称、头像、地区及性别',success: res => {console.log('获取你的昵称、头像',res);// 登录请求// api.apiPost("/api/member/wechatappauth", {//     jscode: jsCode,//   jscodeinfo:res// }, (res1) => {//   console.log(res1)//     if (res1.code == 0) {//   } else {//      uni.showModal({//           title: '登录失败',//          content: '请刷新小程序后重新操作',//         });//   }// })},fail: res => {console.log(2);console.log(res)//拒绝授权uni.showToast({title: '您拒绝了请求,不能正常使用小程序',icon: 'error',duration: 2000});return;}});
}

注意事项:

服务端用户信息解密失败原因:小程序客户端调用微信服务器的接口顺序反了。

 顺序应该是  1、wx.login    2、wx.getUserInfo 。
如果顺序反过来 ,会出现校验解密失败的问题,比较坑的是 不是每次都出错。

小程序客户端需要调用微信服务器的wx.login接口来获取code,然后调用wx.getUserInfo来获取加密数据和偏移向量iv。正确的顺序应该是先调用login,然后再调用getUserInfo。

uniApp微信小程序唤出授权头像昵称(微信授权登录)弹窗,及服务端用户信息解密注意事项相关推荐

  1. 微信小程序官方调整头像昵称获取问题;微信扫码链接wifi,wifi地推,两种可行的解决方案

    微信小程序官方调整头像昵称获取问题:微信扫码链接wifi,wifi地推 更新时间:2022年11月9日 由于 PC/macOS 平台「头像昵称填写能力」存在兼容性问题,对于来自低于2.27.1版本的访 ...

  2. 微信小程序获取获取头像昵称

    小程序获取头像昵称之前可以通过以下代码可以实现2022年2月21日24时起小程序回收,目前已经停用. 小程序用户信息相关接口调整公告链接如下 https://developers.weixin.qq. ...

  3. 微信小程序最新获取头像昵称方式

    前言 版本历史变迁 一.获取头像的正确姿势 二.获取昵称的正确姿势 总结 前言 产品需要获取微信用户的昵称和头像. 这这还不简单,so easy! 通过wx.getUserProfile或者 wx.g ...

  4. java获取openid_JAVA获取微信小程序openid和获取公众号openid,以及通过openid获取用户信息...

    https://www.cnblogs.com/lxwt/p/10154540.html?tdsourcetag=s_pcqq_aiomsg 一,首先说明下这个微信的openid 为了识别用户,每个用 ...

  5. 微信小程序页面onLoad获取app.js的onLaunch数据(异步获取用户信息)

    微信小程序声明周期 小程序的生命周期,简单来说:就是app.js里的onLaunch和页面里的page.js的onLoad异步执行. 通过回调函数架构起联系,便于获取app.js内的全局数据 代码 a ...

  6. 2000套微信微信小程序源码+抖音微信小程序源码附开源代码

    授权微信小程序SDK(authing-wxapp-sdk)适用于微信微信小程序(打开新窗口)基于微信微信小程序环境.可以使用微信微信小程序源码中的所有方法,比如Get,修改用户信息,添加用户自定义字段 ...

  7. 微信小程序上传头像和昵称持久化保存

    微信小程序上传头像和昵称持久化保存 1. 持久化步骤 因为通过微信头像昵称填写功能获取到头像是一个临时头像,这个url只能一段时间内在微信访问,并且无法在公网访问这个url.所以非常有必要把这个url ...

  8. 微信小程序获取个人头像和昵称,和地图选点功能

    微信小程序获取个人头像和昵称,有技巧 1.可以直接获取 2.通过用户点击获取 过程中,有什么问题,可以加我微信号yizheng369探讨 先分析 这里面隐含了很多默认的规则,大家要注意: 1.可以直接 ...

  9. 微信小程序最新获取头像以及昵称方法

    微信小程序最新获取头像信息 之前是使用open-dada获取微信头像和昵称,但是后面由于官网更新,此方法被收回了,所以不能使用此方法了. 之前方法代码: <open-data type=&quo ...

最新文章

  1. 9-7NOIP模拟赛总结
  2. [云炬创业管理笔记]第二章测试4
  3. 互联网常识(持续更新)
  4. String.prototype.substr()
  5. 恐龙的丁丁长什么样?它们是怎么啪啪啪的?这项研究网友看完直呼涨姿势.........
  6. C++中如何读取一个数的位数_C语言编写程序求水仙花数
  7. 用一个程序生成另一个程序_还有另一个报告生成器?
  8. 窗口闪退_今天只讲一件事,精雕软件的BUG(进浮雕闪退,笔刷变圈圈等)
  9. 云图说丨手把手教你为容器应用配置弹性伸缩策略
  10. 数据结构之队列的应用(实现斐波那契数列)
  11. Linux下如何解压.zip和.rar文件
  12. 使用 Beyond Compare 和版本控制系统
  13. matlab 光场相机透镜中心,DiffuserCam——一款不需要光学透镜的低成本光场相机
  14. SDJZU_新生_递推动规_HDU 2084 数塔
  15. 鹏业软件清单量和定额量一样,水平竖向相差很多的问题
  16. 基于SSM架构的新闻管理系统设计与实现论文
  17. 正则表达式同时匹配中英文_,还控制长度
  18. Java算法面试题(007) 蒙提霍尔问题(三门问题)
  19. 前端监控sdk 页面性能监控
  20. 屏幕录制大师哪款好用?这3款录屏工具,值得推荐!

热门文章

  1. android 个性按钮,酷炫的日间夜间模式切换按钮
  2. MySQL学习笔记(2)——存储过程与存储函数
  3. edger多组差异性分析_使用edgeR进行无重复差异表达分析
  4. mysql中的时间类型和比较大小
  5. 蚩尤战团宣传单(Designed by Casularm)
  6. NoSQL 新贵之崛起的 Neo4j
  7. CSS+DIV下的网页设计实例
  8. [Python GUI]DearPyGui搭建、你好、打包
  9. Linux typeset用法
  10. 5、Hadoop搭建(分布式版本)