微信小程序获取用户信息的几种方式
以下三种方式都无法获取到用户的openID
1. 开放组件获取用户信息<open-data></open-data>该功能已无效
- 该组件的type属性根据不同的属性值可以展示用户不同的信息
- 该方式不需要授权,因为该方式值能获取到当前登录用户自己的基础信息
- 但是该方法获取的用户信息只能展示,不可以通过js方法获取到
- 组件功能调整 开发者在未获取用户明示同意的情况下通过 组件 在小程序中展示用户个人信息,用户容易误以为自己的个人信息在未授权的情况下,被小程序获取。平台计划从2022年2月21日24时起回收通过展示个人信息的能力,若小程序需收集用户昵称头像等信息,可以通过 头像昵称填写功能 功能进行收集。具体回收方式为:
头像展示 灰色头像
用户昵称展示“微信用户”
用户性别、地区、语言展示为为空(“”)
1 2 3 4 5 | < open-data type = "userAvatarUrl" >用户头像</ open-data > < open-data type = "userNickName" >用户昵称</ open-data > < open-data type = "userCountry" >用户国家</ open-data > < open-data type = "userCity" >用户城市</ open-data > |
2. wx.getUserInfo({})方法
- 该api只有已经授权过的用户才会被获取到信息,没有授权过的话调用是没用用的
1 2 3 4 5 | wx.getUserInfo({ success: (res)=>{ console.log(res) } }) |
3. 配置open-type属性
- 该方法可以弹出授权框,授权后可使用上面第二种方法获取用户信息
使用bindgetuserinfo属性绑定事件,该事件出发后有一个event参数,
1 2 3 4 5 | < button open-type = "getUserInfo" bindgetuserinfo = "onGetuserinfo" > 获取用户信息 </ button > |
1 2 3 | onGetuserinfo(event){ // console.log(event) }, |
想要获取到用户的openID有两种方法
1. 传统的小程序开发
1 2 3 4 | 1. 调用wx.login方法成功后获取到code 2. 使用wx.request发起网络请求将code传递给后端服务器 3. 后端会使用code换取到openid和session_key后再返回给前端 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | onLoad: function (options) { wx.login({ success: function (res) { if (res.code) { //如果调用wx.login后获取到code //发起网络请求 wx.request({ url: '后端接口' , data: { code: res.code }, success: function (res) { const self = this if (逻辑成功) { //获取到用户凭证 存儲 3rd_session var json = JSON.parse(res.data.Data) wx.setStorage({ key: "third_Session" , data: json.third_Session }) getUserInfo() } else { } }, fail: function (res) { } }) } }, fail: function (res) { } }) } |
2. 小程序云开发
创建微信小程序云开发项目后,云函数中会自带一个login云函数,该云函数中已经有获取用户openid的方法,调用该云函数后会返回当前小程序的appid和openid
1 2 3 4 5 | wx.cloud.callFunction({ name: 'login' }).then((res)=>{ console.log(res) }) |
标签:
最新微信小程序获取用户信息