最近在研究微信小程序怎么玩的。接触后发现好多的坑。 比如在浏览器中我们可以通过document.getElementById 获取到页面的DOM对象。而在微信小程序中是获取不到DOM对象的。document.getElementById() 直接报错 getElementById not function 我也是醉了。不支持这个好多有趣的功能不能实现了。 言归正传,我谈下获取用户信息的感想。 有两种获取用户信息的方案。 1、不包含敏感信息openId 的json对象(包含:nickname、avatarUrl等基本信息) 2、包含敏感信息openId的基本信息。 第一种获取方案 在微信小程序的开发过程中,获取用户信息是一项至关重要的任务,因为这关系到用户的身份认证以及个性化服务的提供。与传统的Web应用不同,微信小程序并没有浏览器环境,因此无法使用DOM操作来获取用户信息。这里我们将详细探讨两种在微信小程序中获取用户信息的方法。 1. 不包含敏感信息的openId JSON对象(包含:nickname、avatarUrl等基本信息) 这种方式相对简单,主要通过微信小程序提供的API直接获取。首先调用`wx.login()`接口,请求用户的登录授权。用户同意授权后,可以调用`wx.getUserInfo()`接口来获取用户的基本信息,如昵称(nickname)、头像URL(avatarUrl)等。以下是一个简单的示例代码: ```javascript wx.login({ success: function () { wx.getUserInfo({ withCredentials: true, success: function (res) { var simpleUser = res.userInfo; console.log(simpleUser.nickName); } }); } }); ``` 2. 包含敏感信息的openId基本信息 这种方法涉及到服务器端的交互,以获取完整的用户信息,包括openId。首先同样需要调用`wx.login()`接口,获取到一个code。然后调用`wx.getUserInfo()`接口,获取encryptedData和iv。接着,将这些参数发送到后端服务器,由服务器解析并获取用户信息。以下是一个基于Node.js的示例代码片段: ```javascript const request = require('../../utils/request.js'); wx.login({ success: function (res_login) { if (res_login.code) { wx.getUserInfo({ withCredentials: true, success: function (res_user) { const requestUrl = '/getUserApi/xxx.php'; const jsonData = { code: res_login.code, encryptedData: res_user.encryptedData, iv: res_user.iv, }; request.httpsPostRequest(requestUrl, jsonData, function (res) { console.log(res.openId); }); }, }); } }, }); ``` 后端服务器接收到前端传来的参数后,通常会使用微信官方提供的SDK或者自行实现的解密算法来解析encryptedData,以获取openId和其他敏感信息。以下是一个简单的PHP示例,展示如何调用微信API和解密过程: ```php public function wxUserInfo($code, $encryptedData, $iv) { $apiUrl = "https://api.weixin.qq.com/sns/jscode2session?appid={$this->wxConfig['appid']}&secret={$this->wxConfig['appsecret']}&js_code={$code}&grant_type=authorization_code"; $apiData = json_decode(curlHttp($apiUrl, true), true); if (!isset($apiData['session_key'])) { echoJson(array("code" => 102, "msg" => "curl error"), true); } $userInfo = getUserInfo($this->wxConfig['appid'], $apiData['session_key'], $encryptedData, $iv); if (!$userInfo) { echoJson(array("code" => 105, "msg" => "userInfo not"), true); } echo $userInfo; } // 其他辅助函数,如curlHttp和getUserInfo等 ``` 微信小程序获取用户信息的过程需要结合前端与后端的配合。对于不涉及敏感信息的需求,可以直接使用`wx.getUserInfo()`;而如果需要获取如openId这样的敏感信息,就需要通过服务器进行处理,以确保用户数据的安全。需要注意的是,微信小程序的API使用时需遵循微信的开发者政策,确保用户隐私得到妥善保护。在实际开发中,还需要考虑用户授权提示的友好性,以及异常情况的处理,以提供良好的用户体验。


























- 粉丝: 5
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 储能变流器三相并网电压矢量控制技术解析及其双向充放电应用
- python实现飞书多维表格增删改实时同步到mysql
- 观察者模式 代码方便后续查看
- 电力电子领域CLLC双向谐振变换器的输出电压闭环控制与自动正反向运行仿真 精华版
- Simulink仿真模型中锂电池与双向DCDC变换器智能切换模式的技术解析及应用
- 基于MATLAB的单闭环直流调速系统设计与仿真:参数优化及应用 自动控制 v2.5
- COMSOL双层结构曲界面声场仿真:聚焦探头在水钢介质中的声压分布与能量聚焦特性分析
- 电力电子领域4mos结构两相交错并联Buck-Boost变换器仿真的控制方式分析
- 社区团购-社区团购系统-社区团购系统源码-社区团购系统代码-springboot社区团购系统源码-基于springboot的社区团购系统设计与实现-社区团购管理系统-社区团购项目代码-社区团购网站代码
- 光伏交直流混合微电网离网模式双下垂控制MatlabSimulink仿真研究
- PMSM电机三环控制仿真模型初学者学习指南 - MATLAB2023b及以上版本适用 - PMSM
- COMSOL注浆渗流球形结果
- zynq7000 ucosii库 ISE14.7
- MATLAB实现2D3D A路径规划算法:交互式地图、DLL导出及C++集成
- 【地理信息系统】基于EE的MODIS地表温度数据处理:财政年度区域统计与导出
- 西门子博途Modbus TCP通讯FB块:支持多站点交互与客户端服务器切换的工业通信解决方案



- 1
- 2
前往页