微信小程序学习实录10:轻松获取用户昵称、头像与登录openid实战攻略

在这里插入图片描述
在微信小程序开发中,获取用户的个人信息(如昵称和头像)以及用户的唯一标识OpenID是非常常见的需求。本文将详细介绍如何通过微信提供的API来实现这些功能,并提供一个完整的实战案例。

用户选择头像

微信提供了chooseAvatar组件,允许用户从相册或相机选择一张图片作为头像。我们可以使用这个组件来让用户选择并更新他们的头像。当小程序需要让用户完善个人资料时,可以通过微信提供的头像昵称填写能力快速完善。

wxml文件

<!--pages/user/index.wxml-->
<view class="page"><view class="weui-form container"><button class="avatar-wrapper" open-type="chooseAvatar" bind:chooseavatar="onChooseAvatar"><image class="avatar" src="{{avatarUrl}}"></image></button><view class="weui-form__control-area"><view class="weui-cells__group weui-cells__group_form"><view class="weui-cells"><view class="weui-cell weui-cell_active"><view class="weui-cell__hd"><label class="weui-label">昵称</label><view class="weui-cell__desc">必填项 *</view></view><view class="weui-cell__bd"><input type="nickname" class="weui-input" bindinput="bindPassInput" placeholder="请输入昵称" placeholder-class="weui-input__placeholder" value="{{newpass}}" /></view></view></view></view></view></view>
</view>

wxss文件

.page {height: 100vh;background-color: #fff;
}.avatar-wrapper {padding: 0;width: 56px !important;border-radius: 8px;margin-top: 40px;margin-bottom: 40px;
}.avatar {display: block;width: 56px;height: 56px;
}.container {display: flex;
}

js文件

// pages/user/index.js
const defaultAvatarUrl = 'https://mmbiz.qpic.cn/mmbiz/icTdbqWNOwNRna42FI242Lcia07jQodd2FJGIYQfG0LAJGFxM4FbnQP6yfMxBgJ0F3YRqJCJ1aPAK2dQagdusBZg/0'
const utils = require("../../utils/util.js");
Page({data: {avatarUrl: defaultAvatarUrl,},onLoad() {//获取用户openid//this.userLogin();},onChooseAvatar(e) {const {avatarUrl} = e.detailconsole.log(avatarUrl)this.setData({avatarUrl,})},userLogin() {wx.login({success(res) {console.log(res.code)if (res.code) {//发起网络请求wx.request({url: utils.host_domain + 'api/api.php?act=getUserInfo&token=3cab7ce4142608c0f40c785b5ab5ca24',method: "POST",data: JSON.stringify({code: res.code}),header: {'content-type': 'application/json' // 默认值},success(res) {console.log(res.data.data);}})} else {console.log('登录失败!' + res.errMsg)}}})}
})

获取用户授权

在微信小程序中,为了保护用户隐私,开发者需要先获得用户的授权才能获取其个人信息。我们可以通过wx.login接口获取用户的临时登录凭证code,然后使用该code向微信服务器换取用户的OpenID等信息。

php后端

获取用户信息

 public function getUserInfo() {$data = json_decode(file_get_contents('php://input'), true);if (!isset($data['code'])) {$response = ['code' => 0,'msg' => 'Missing code parameter','data' => null];die(json_encode($response));}$code = $data['code'];$appid = 'your_appid'; // 替换为你的小程序 AppID$secret = 'your_secret'; // 替换为你的小程序 AppSecret$url = "https://api.weixin.qq.com/sns/jscode2session?appid={$appid}&secret={$secret}&js_code={$code}&grant_type=authorization_code";$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);curl_setopt($ch, CURLOPT_TIMEOUT, 30);$response = curl_exec($ch);if (curl_errno($ch)) {$error_msg = 'cURL error: ' . curl_error($ch);$response = ['code' => 0,'msg' => $error_msg,'data' => null];} else {$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);if ($httpCode == 200) {$jsonResponse = json_decode($response, true);if (json_last_error() === JSON_ERROR_NONE) {$response = ['code' => 1,'msg' => 'OK','data' => $jsonResponse];} else {$response = ['code' => 0,'msg' => 'JSON decode error: ' . json_last_error_msg(),'data' => null];}} else {$response = ['code' => 0,'msg' => 'HTTP error: ' . $httpCode,'data' => null];}}curl_close($ch);die(json_encode($response));
}

保存用户信息

public function saveUserInfo() {$data = json_decode(file_get_contents('php://input'), true);if (!isset($data['avatarUrl']) || !isset($data['nickname'])) {$response = ['code' => 0,'msg' => 'Missing required parameters','data' => null];die(json_encode($response));}$avatarUrl = $data['avatarUrl'];$nickname = $data['nickname'];// 这里可以将用户信息保存到数据库或其他存储系统// 示例:假设你有一个数据库连接 $conn// $stmt = $conn->prepare("INSERT INTO users (avatar_url, nickname) VALUES (?, ?)");// $stmt->bind_param("ss", $avatarUrl, $nickname);// $stmt->execute();$response = ['code' => 1,'msg' => 'User information saved successfully','data' => null];die(json_encode($response));
}

@漏刻有时

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/440800.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ROS基础入门——实操教程

ROS基础入门——实操教程 前言 本教程实操为主&#xff0c;少说书。可供参考的文档中详细的记录了ROS的实操和理论&#xff0c;只是过于详细繁杂了&#xff0c;看得脑壳疼&#xff0c;于是做了这个笔记。 Ruby Rose&#xff0c;放在这里相当合理 本文初编辑于2024年10月4日 C…

使用vscode调试wails项目(golang桌面GUI)

文章目录 安装 Golang 环境安装 NPM安装 VSCode安装 Go 插件安装 Go 插件依赖工具安装 Wails系统检查 准备项目Visual Studio Code 配置安装和构建步骤参考资料 安装 Golang 环境 访问 golang 官网下载环境安装包&#xff1a;https://go.dev/dl/ 安装 NPM 从 Node 下载页面 …

时序必读论文16|ICLR24 CARD:通道对齐鲁棒混合时序预测Transformer

论文标题&#xff1a;CARD: Channel Aligned Robust Blend Transformer for Time Series Forecasting 论文链接&#xff1a;https://arxiv.org/abs/2305.12095 代码链接&#xff1a;https://github.com/wxie9/CARD 前言 Transformer取得成功的一个关键因素是通道独立&#…

鸿蒙开发之ArkUI 界面篇 十九 Flex组件的特点

其语法格式是: Flex(参数对象){ 字组件1, 字组件2, 字组件3, 字组件4 } 这里你会发现&#xff0c;其实和Row容器&#xff0c;Colum容器的语法格式差不多&#xff0c;核心的关键是Colum、Row是不支持换行&#xff0c;实现FlexInterface接口&#xff0c;对外提供的属性是F…

数据库(MySQL):使用命令从零开始在Navicat创建一个数据库及其数据表(二).设置主键自增等特点

前言 在上一节中&#xff0c;主要介绍了 Navicat Premium 17 的使用以及创建一个基础的表格。当时只设置了给数据表补充字段&#xff0c;没有设置给数据表删除字段。现在补充一下。 ALTER TABLE student ADD test int(4); 给名为 student 的数据表添加 test 列&#xf…

Android OTA升级

针对Android系统OTA升级&#xff0c;MTK平台有相关介绍文档&#xff1a;https://online.mediatek.com/apps/faq/detail?faqidFAQ27117&listSW 概念一&#xff1a;OTA包的构建 AOSP full build&#xff1a;Android原生提供的全量包的构建&#xff0c;意思就是可以从任何一…

数据结构:AVL树

前言 学习了普通二叉树&#xff0c;发现普通二叉树作用不大&#xff0c;于是我们学习了搜索二叉树&#xff0c;给二叉树新增了搜索、排序、去重等特性&#xff0c; 但是&#xff0c;在极端情况下搜索二叉树会退化成单边树&#xff0c;搜索的时间复杂度达到了O(N)&#xff0c;这…

【EXCEL数据处理】000020 案例 保姆级教程,附多个操作案例。EXCEL使用表格。

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 【EXCEL数据处理】000020 案例 保姆级教程&#xff0c;附多个操作案例。…

vulnhub-digitalworld.local DEVELOPMENT靶机

vulnhub&#xff1a;digitalworld.local: DEVELOPMENT ~ VulnHub 导入靶机&#xff0c;放在kali同网段&#xff0c;扫描 靶机在192.168.114.129&#xff0c;扫描端口 开了几个端口&#xff0c;8080端口有网页&#xff0c;访问 说是让访问html_pages 似乎把页面都写出来了&…

2-115 基于matlab的瞬态提取变换(TET)时频分析

基于matlab的瞬态提取变换&#xff08;TET&#xff09;时频分析&#xff0c;瞬态提取变换是一种比较新的TFA方法。该方法的分辨率较高&#xff0c;能够较好地提取出故障的瞬态特征&#xff0c;用于故障诊断领域。通过对原始振动信号设置不同信噪比噪声&#xff0c;对该方法的抗…

面向对象特性中 继承详解

目录 概念&#xff1a; 定义&#xff1a; 定义格式 继承关系和访问限定符 基类和派生类对象赋值转换&#xff1a; 继承中的作用域&#xff1a; 派生类的默认成员函数 继承与友元&#xff1a; 继承与静态成员&#xff1a; 复杂的菱形继承及菱形虚拟继承&#xff1a; 虚…

学MybatisPlus

1.设置MySql的数据库 spring:datasource:url: jdbc:mysql://127.0.0.1:3306/mp?useUnicodetrue&characterEncodingUTF-8&autoReconnecttrue&serverTimezoneAsia/Shanghaidriver-class-name: com.mysql.cj.jdbc.Driverusername: rootpassword: MySQL123 logging:l…

IDEA搭建JDK1.8源码调试环境

大家好 下载源码 安装好 JDK 后&#xff0c;源码目录下面有 src.zip 文件&#xff0c;这个文件就是 JDK 的源码 搭建调试环境 新建 Maven 工程&#xff0c;包含以下文件 source&#xff1a;源码文件夹&#xff08;手动新建&#xff09;test&#xff1a;单元测试文件夹&…

Linux文件重定向文件缓冲区

目录 一、C文件接口 二、系统文件I/O 2.1认识系统文件I/O 2.2系统文件I/O 2.3系统调用和库函数 2.4open( )的返回值--文件描述符 2.5访问文件的本质 三、文件重定向 3.1认识文件重定向 3.2文件重定向的本质 3.3在shell中添加重定向功能 3.4stdout和stderr 3.5如何理…

JS测试框架——Jest

文章目录 安装yarn安装jestvscode支持jest的智能提示创建JS测试用例 安装yarn yarn是meta发布的一款取代npm的包管理工具。 npm install -g yarn查看yarn软件源 yarn config get registry换源 yarn config set registry https://registry.npmmirror.com恢复官方源 yarn co…

中广核CGN25届校招网申SHL测评题库、面试流程、招聘对象,内附人才测评认知能力真题

​中国广核集团校园招聘在线测评攻略&#x1f680; &#x1f393; 校园招聘对象 2024届、2025届海内外全日制应届毕业生&#xff0c;大专、本科、硕士、博士&#xff0c;广核集团等你来&#xff01; &#x1f4c8; 招聘流程 投递简历 简历筛选 在线测评&#xff08;重点来啦…

个人项目简单https服务配置

1.SSL简介 SSL证书是一种数字证书&#xff0c;由受信任的证书颁发机构&#xff08;CA&#xff09;颁发&#xff0c;用于在互联网通信中建立加密链接。SSL代表“安全套接层”&#xff0c;是用于在互联网上创建加密链接的协议。SSL证书的主要目的是确保数据传输的安全性和隐私性…

看Threejs好玩示例,学习创新与技术(LiquidRaymarching)

今天的示例有点超出我的想象&#xff0c;首先会科普下WGSL这种新的着色器脚本&#xff0c;然后说说示例《Liquid Raymarching Scene with Three.js Shading Language | Codrops (tympanus.net)》的技术流程。本示例最终呈现的效果如下。可以看到他跟QQ那个消息拖拽消灭的效果非…

基于STM32的数字温度传感器设计与实现

引言 STM32 是由意法半导体&#xff08;STMicroelectronics&#xff09;开发的基于 ARM Cortex-M 内核的微控制器系列&#xff0c;以其强大的处理能力、丰富的外设接口和低功耗著称&#xff0c;广泛应用于嵌入式系统设计中。在这篇文章中&#xff0c;我们将介绍如何基于 STM32…

考研论坛平台|考研论坛小程序系统|基于java和微信小程序的考研论坛平台小程序设计与实现(源码+数据库+文档)

考研论坛平台小程序 目录 基于java和微信小程序的考研论坛平台小程序设计与实现 一、前言 二、系统功能设计 三、系统实现 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&#xff1a;✌️大厂…