小白上路~微信小程序登录授权无法获取用户信息

2023-11-16

1. button 标签和 open-type=“getUserInfo” 获取用户信息失败

天哪噜,必须好好记录一番由于没有看官方文档更新 api 而导致的 “BUG” !!!

一觉醒来,发现准备收尾的小程序无法获取到用户信息了???怎么回事,于是一顿焦虑 + 骚操作,各种找 BUG

这种用户信息,获取了个寂寞啊???
在这里插入图片描述
贴出原代码:

wxml:

<button bindgetuserinfo="handleGetuserInfo" open-type="getUserInfo">
      登录
</button>

js:

    handleGetuserInfo(e) {
        var that = this
        console.log("handlegetuserinfo:", e)

        // 2 用于前端显示
        const {
            userInfo
        } = e.detail;
        wx.setStorageSync('userInfo', userInfo)
        //访问数据库
        that.login()
    },

2. 改用 button 标签 和 wx.getUserProfile() 成功获取用户信息

查看官方文档更新日志
在这里插入图片描述
参照文档修改代码如下:
wxml:

    <button  bindtap="getUserProfile">
      登录
    </button>

js:

        // 新版获取用户信息
    getUserProfile(e) {
        var that = this
        wx.getUserProfile({
            desc: '用于完善用户资料',
            success: (res) => {
                this.setData({
                // 此处左边的 userInfo 是js data 中定义的全局变量
                // res.userInfo 是调用接口返回的数据
                    userInfo: res.userInfo
                })
                // 将得到的用户信息 userInfo 保存到缓存中
                wx.setStorageSync('userInfo', this.data.userInfo)
                // 输出检查看看
                console.log("getuserProfile:", res.userInfo)
                //调用自定义的 login() 方法访问数据库,将用户信息保存到数据库
                that.login()
            }
        })
    },
    // 登录
    login() {
    	// 获取缓存中的用户信息
        const userInfo = wx.getStorageSync('userInfo');
        console.log("userInfo:", userInfo)
		
		// 如果缓存中有用户信息
        if (userInfo) {
            //  获取微信小程序登陆成功后的code
            wx.login({
                timeout: 500,
                success: (result) => {
                    // 1 成功取得 code
                    const {
                        code
                    } = result;
                    console.log("code:", code)

                    // 2 发送请求到后台 换取 openid
                    // 这里 request() 是自己封装的 es6 的 promise 的方式,读者可以直接使用 wx.request() 
                    request({
                            url: app.globalData.url + '/index.php/code',
                            data: {
                                code: code
                            },
                            method: 'get',
                        })
                        .then(res => {
                            this.setData({
                                openid: res.data.openid,
                            })
                            //将 openid 保存到缓存中
                            wx.setStorage({
                                key: 'openid',
                                data: res.data.openid
                            })
                            // 将用户信息保存到数据库表中
                            request({
                                    url: app.globalData.url + '/index.php/login',
                                    data: {
                                        u_nickName: userInfo.nickName,
                                        u_sex: userInfo.gender,
                                        u_imgUrl: userInfo.avatarUrl,
                                        u_openid: res.data.openid
                                    },
                                    method: "get"
                                })
                                .then(res => {
                                    console.log(res)
                                    if (res.data.msg == "success") {
                                        wx.showModal({
                                            content: '登录成功
                                            showCancel: false,
                                        })
                                        // 登录成功后刷新当前页面,以显示用户信息和用户数据
                                        this.onShow();
                                    }
                                })
                        })
                },
            })
        }

    },

成功获取用户信息:
在这里插入图片描述
要是大家发现一直没有问题的代码突然出现了意料之外的 BUG ,一波排除后,可以看看官方文档更新日志,说不定和我一样,发现是 api 的锅呢? Gook Luck !

By the way~~ 不知道是不是有人和我一样不知道可以这样查看日志:
在这里插入图片描述
若有不正确之处,请指正~ 谢谢

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

小白上路~微信小程序登录授权无法获取用户信息 的相关文章

  • 赋予 d3 序数轴标签与尺度名称不同

    我有一个序数scale具有不同值的某些标签 我想显示该比例的轴 其中轴标签与比例标签不同 我有这个代码 var width 1000 var height 600 var margins left 100 40 right 25 botto
  • Angular 7 Guard 重定向仅适用于双击

    问题是我已经实现了一个 Guard 旨在处理特定的目录 如果当前用户名的角色等于 2 它应该返回 true 如果没有 那么它不应该重定向 这是我的 app routing module ts 文件 问题出在 userlist 路径中 我们是
  • AttachEvent 或 addEventListener - 存储在哪里?

    在 jQuery 中 如果我这样做 a click function Do something 点击事件存储在 a data events 我可以像这样获取它 jQuery each a data events function i eve
  • jQuery UI 对话框使用 setTimeout 自动关闭

    我试图让对话框在打开后三秒自动关闭 我尝试过以下方法 setTimeout mydialog dialog close 3000 这是在上下文中 acknowledged dialog dialog height 140 modal tru
  • Javascript 根据字段值任意排序数组

    所以我有一个对象数组 如下所示 var myArray priority low priority critical priority high 我需要以这种方式排序 1 关键 2 高和3 低 如何才能做到这一点 我建议使用一个对象来存储排
  • contenteditable 在 safari 中不起作用,但在 chrome 中起作用

    我有一个奇怪的问题 这在 chrome 中按预期工作 但在 safari 中它只会发光 但不会对按键输入做出反应 这是触发文本版本的方法 var namebloc event currentTarget find column filena
  • jQuery 问题:它的真正含义是什么?

    function window undefined jquery code jQuery window 它到底意味着什么 是不是也意味着 document ready 或者只是两种不同的东西 已经有两个答案 但这是我对代码缺失端的猜测 fu
  • 表单提交不起作用

    我有一张桌子 可以打印出所有可用的相机 它使用表单来更改这些设置 问题在于该表单仅更新条目中的最后一个摄像机 换句话说 如果我更改表单并为列表中的最后一个摄像机点击 应用 它将起作用 如果我更改此列表中任何其他摄像机的表单 它会将其更改为与
  • JQuery _renderItem 没有被调用

    我正在尝试使用 renderItem 函数创建自定义 ui menu item 元素 但经过可能尝试后 我什至无法调用该函数 自动完成功能正在工作 但就像 renderItem 函数不存在一样 这是我的脚本部分
  • Django 模板变量从 {% for %} 循环到 Javascript

    这是一个迭代记录的 Django 模板 每条记录都包含一个由 JS 函数填充的 div 为了让 JS 知道要做什么 它需要从每次 for 循环迭代中获取一个变量并使用它 我不知道具体如何实现这一目标或是否可能 我不知道 也许记录在单独的 J
  • 数据库设计 - “推”模型,或写时扇出

    背景信息 我正在尝试检索我关注的人的图像 按最新时间排序 它就像 Twitter 新闻源 显示您朋友的最新动态 Plans 目前我只需要考虑一项 那就是图像 将来我计划分析用户的行为并将他们可能喜欢的其他图像添加到他们的提要中等 http
  • 如何从普通 JavaScript 中的输入获取对象

    例如 我有 3 个输入
  • NodeJS 中的缩进多行日志记录

    我要打印JSON stringify d 反对控制台 将上下文作为 Mocha 测试套件输出的一部分 当测试缩进时 我希望对象日志行向右缩进足够远 例如 3 4 个制表符空格 以便它们可以识别地位于右侧describe group 我怎样才
  • jVectorMap - 向下钻取地图 - 自定义背景

    我正在使用 jVectorMap 中的向下钻取地图 并且尝试将自定义背景颜色设置为地图的第二层 为了自定义主级别 我使用 main 参数 但我不知道如何将其扩展到地图的较低级别 提前致谢 马切伊 None
  • 重复密码在 Yii2 中不起作用

    我在模型中编写的规则如下 public password repeat inheritdoc public function rules return password required password string min gt 6 p
  • MySql 西班牙语字符数据

    我有一个包含西班牙语字符的数据库 为了填充数据库 我从字符编码 UTF 8 的客户端页面获取值 当我在 mySql 数据库中插入值时 行包含更改的数据 例如 如果我插入 M xico 数据库中的条目是 M xico 其影响是当我对指定 M
  • 在子目录中使用反向代理运行 Symfony 5

    我喜欢在反向代理后面运行 Symfony 5 应用程序 该代理提供以下端点 https my domain service1 https my domain service1 代理配置基本上是这样的 ProxyPass marketsy h
  • 谷歌地图绘制两点之间的路线

    我编写了这段无辜的 JavaScript 代码 它允许用户创建两个标记并绘制它们之间的路线 它不起作用 相反 它给出了一个奇怪的错误 Uncaught TypeError Cannot read property ya of undefin
  • 单个返回语句与多个返回语句? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何制作饼图聚合数据源?

    Using 适用于 ASP NET MVC 的 Kendo UI 完整版 http www kendoui com 版本 2013 3 1119 2013年11月20日 如果我有这段代码 status chart kendoChart da

随机推荐

  • 修改NuGet下载包后存放的默认路径

    NuGet默认下完包后就放在C盘 我们给他改一下 NuGet的默认目录配置文件在C Users yourName AppData Roaming NuGet NuGet Config 加一下这个配置 我放在了D盘 你可以看情况自己改
  • 【Hadoop技术篇】hadoop的使用

    博主介绍 博主介绍 大家好 我是淼淼 喵 很高兴认识大家 主攻领域 大数据开发 数据仓库 ETL 数据分析 面试分析 点赞 评论 收藏 养成习惯 一键三连 欢迎关注 一起学习 一起讨论 一起进步 欢迎评论 作者水平有限 欢迎各位大佬指点 相
  • 沐神《动手学深度学习》报错 解决方案RuntimeError: DataLoader worker (pid(s) ...) exited unexpectedly

    3 6 softmax回归的从零开始实现 运行 print evaluate accuracy net test iter 报了一溜错误 其中最后一行为 RuntimeError DataLoader worker pid s 5052 1
  • 包和 jar 文件的创建

    前言 在之前的文章中 讲到了面向的 3 大特性 封装 继承 多态 和面向对象设计的 5 大原则 SRP OCP LSP DIP ISP 此外 我们还讲了如何创建一个类 并且在创建类后如何构造一个对象 然后还介绍了类中的属性和方法 并对构造方
  • 方程组线性化方法和牛顿迭代法基础

    方程组线性化方法和牛顿迭代法基础 非线性方程组线性化和牛顿迭代法 参考书籍 GPS原理与接收机设计 谢钢 非线性方程 就是因变量与自变量之间的关系不是线性的关系 这类方程很多 例如平方关系 对数关系 指数关系 三角函数等等 求解此类方程往往
  • ESP-NOW:竟然还有如此好用的无线通信方式

    用 Arduino 玩转 ESP32 系列历史文章目录 ESP32 概述与 Arduino 软件准备 ESP32 GPIO接口编程入门 蓝牙翻页笔 蓝牙键盘与PPT 控制器 B 站粉丝计数器 Siri 语音识别控制 LED 灯 Siri 语
  • eclipse 关于报错Error creating bean with name ‘xxxxx‘: Invocation of init method....

    网上查找的资料是这种异常一般都是包导错了 缺失 冲突 版本错误都可能 由于再报这个错之前我进行了添加删除修改pom xml文件 右键项目 gt maven gt update project project gt clean等这些对于项目整
  • C语言模拟实现atoi函数

    atoi函数 主要功能是将一个字符串转变为整数 例如将 12345 gt 12345 但在实现过程中 我们难免会因为考虑不够全面而漏掉比较重要的几点 今天就总结一下实现atoi函数需要注意的地方 1 指针为NULL 2 字符串为空字符串 3
  • etcd的简单使用

    etcd的简单使用 ETCD安装配置 安装 去https github com coreos etcd releases 下载想要的版本解压etcd包 解压后进入目录 增加x权限 chmod x etcd chmod x etcdctl 并
  • MySQL5.7安装报错:GPG key retrieval failed: [Errno 14] curl#37 - "Couldn't open file /etc/pki/rpm-gpg/RPM

    根据官方文档使用yum安装MySQL5 7 添加mysl comunity repo如下 mysql57 community name MySQL 5 7 Community Server baseurl http repo mysql c
  • [Docker]进入容器命令

    docker exec it api bin bash docker exec it api bin sh
  • JVM入门教程

    文章目录 简介 1 Java内存区域 1 1 程序计数器 1 2 Java虚拟机栈 1 3 本地方法栈 1 4 Java堆 1 5 方法区 1 6 运行时常量池 1 7 直接内存 2 HotSpot虚拟机 2 1 对象的创建 2 2 对象的
  • MyISAM和InnoDB区别关联详解

    Mysql架构 什么存储引擎 MySQL和InnoDB对比1 2 总结 Mysql存储架构 从上图可以发现 MySQL由以下几部分组成 连接池组件 管理服务和工具组件 SQL接口组件 查询分析器组件 优化器组件 缓冲 Cache 组件 插件
  • C++引用,四区和函数

    引用变量 四区 函数 没有函数重载 代码区 全局区 堆区和栈区 代码区 全局区 栈区 堆区 new操作符 引用 函数的默认参数 函数的占位参数 代码区 全局区 堆区和栈区 注意 其中代码区和全局区是运行前的 栈区和堆区是运行后的 即如果ex
  • 微信小程序实现举报功能

    一 后台接口 userController java 前端接收一个usersReportd对象 包含数据如下 PostMapping reportUser public IMoocJSONResult reportUser RequestB
  • React Hooks

    Facebook团队对社区上的MVC框架都不太满意的情况下 开发了一套开源的前端框架react 于2013年发布第一个版本 react最开始倡导函数式编程 使用function以及内部方法React creactClass创建组件 之后在E
  • 第二章 系统设置及基本操作

    第二章 系统设置及基本操作 使用GNOME桌面套件中的首选项设置及系统管理工具执行以下任务 一 为第一块网卡设置静态IP地址 并能够与同网段中的其他主机相互通信 步骤 1 点击 系统 管理 网络 打开 网络配置 窗口 如图所示 2 在 配置
  • 华为od机试 C++ 猜字谜

    题目 玩家看到的是个错乱的单词 像 nesw 这样 他们要做的就是从一大堆备选的单词中 猜出这个错乱单词原来的模样 怎么才算猜对了呢 有两种可能 把错乱单词的字母重新排列一下 如果跟备选单词一模一样 那就对了 例如 nwes 重新排列就是
  • CTFshow 命令执行 web34

    源码
  • 小白上路~微信小程序登录授权无法获取用户信息

    1 button 标签和 open type getUserInfo 获取用户信息失败 天哪噜 必须好好记录一番由于没有看官方文档更新 api 而导致的 BUG 一觉醒来 发现准备收尾的小程序无法获取到用户信息了 怎么回事 于是一顿焦虑 骚