本文继续新知识的学习,讲述微信小程序常用个人信息获取,附上示例代码供大家快速上手。
微信小程序基于微信的开放能力,能获取用户很多个人信息。如果涉及隐私,微信小程序通常会弹出授权窗口告知用户,并在征得同意后才能成功调用接口。如果用户拒绝了授权,之后再调用接口时有可能不再弹出授权窗口,这时需要开发者引导用户通过点击事件触发wx.openSetting,让用户开启授权。
wx.openSetting({
success: (res) => {
console.log(res.authSetting)//打印开启权限结果
}
})
下面逐一介绍,代码亲测可用。
接口说明:获取头像、昵称、性别、语言、国家、省份、城市 是否需要授权:是 页面截图:
示例代码:
wx.getUserProfile({
desc: '用于完善会员资料', //声明获取信息的用途,后续会展示在浮窗,为必填项
success: (res) => {
console.log("头像",res.userInfo.avatarUrl);
console.log("昵称",res.userInfo.nickName);
console.log("性别",res.userInfo.gender);
console.log("语言",res.userInfo.language);
console.log("国家",res.userInfo.country);
console.log("省份",res.userInfo.province);
console.log("城市",res.userInfo.city);
}
})
使用场景:注册登录
注意事项:
1、此接口需要点击事件触发,longpress/touch无效;返回的信息为用户在微信账号所填写的信息;
2、如果用户资料仅用于页面展示,可以用<open-data>
组件进行渲染,不需要用户确认,例如:
头像 <open-data type="userAvatarUrl"></open-data>
昵称 <open-data type="userNickName"></open-data>
性别 <open-data type="userGender"></open-data>
语言 <open-data type="userLanguage"></open-data>
国家 <open-data type="userCountry"></open-data>
省份 <open-data type="userProvince"></open-data>
城市 <open-data type="userCity"></open-data>
接口说明:获取用户经纬度 是否需要授权:是 页面截图:
示例代码:
wx.getLocation({
success: (res) => {
console.log("经度",res.longitude);
console.log("纬度",res.latitude);
}
})
使用场景:打车、公交查询 注意事项: 1、使用此接口前需要在app.json声明permission字段(与pages同级),代码如下
"permission": {
"scope.userLocation": {
"desc": "你的位置信息将用于小程序位置接口的效果展示"
}
}
2、基础库大于等于2.17.0版本的情况下,开发版或体验版在30秒内第1次调用有效,其余返回fail;正式版在一定时间内(官方未公布具体时间)第1次调用有效,其余返回第1次调用的结果
接口说明:获取联系人、手机号码、地区、详细地址、邮编等等 是否需要授权:否(需要用户选择联系人才返回信息) 页面截图:
示例代码:
wx.chooseAddress({
success: (res) => {
console.log("姓名", res.userName);
console.log("电话", res.telNumber);
console.log("省份", res.provinceName);
console.log("城市", res.cityName);
console.log("区县", res.countyName);
console.log("详细地址", res.detailInfo);
console.log("邮编", res.postalCode);
}
})
使用场景:填写收货地址 注意事项: 1、调用此接口无需用户授权,直接拉起微信原生页面「我的地址」 2、如果用户没有在微信配置地址,调用此接口会进入新增地址页面
接口1说明:获取发票抬头 是否需要授权:否(需要用户选择发票抬头才返回信息) 页面截图:
示例代码:
wx.chooseInvoiceTitle({
success: (res) => {
console.log("抬头名称",res.title);
console.log("抬头类型",res.type); //0为单位,1为个人
console.log("电话号码",res.telephone);
console.log("单位地址",res.companyAddress);
console.log("银行账号",res.bankAccount);
console.log("银行名称",res.bankName);
console.log("抬头税号",res.taxNumber);
}
})
接口2说明:获取发票记录 是否需要授权:否(需要用户选择发票记录才返回信息) 页面截图:
示例代码:
wx.chooseInvoice({
success: (res) => {
//返回的是JSON字符串,因此需要转换成对象
let invoiceInfo = JSON.parse(res.invoiceInfo);
//选中多少张发票将返回多少个对象,在这假设只选了1张
console.log("所选发票卡券的cardId",invoiceInfo[0].card_id);
console.log("所选发票卡券的加密code",invoiceInfo[0].encrypt_code);
console.log("发票方的appId",invoiceInfo[0].app_id);
}
})
使用场景:开发票 注意事项: 调用wx.chooseInvoiceTitle拉起的是微信原生页面「我的发票抬头」,需要当前小程序关联一个完成微信认证的公众号;
接口说明:获取用户过去30天的微信运动步数 是否需要授权:是 页面截图:
示例代码:
wx.getWeRunData({
success (res) {
console.log("加密算法的初始向量", res.iv);
console.log("加密数据", res.encryptedData);
console.log("云ID", res.cloudID);
}
})
使用场景:健身排行榜 注意事项: 后续需要在开发者服务器结合加密数据解密微信运动步数,或通过云函数结合cloudID获取
接口说明:获取用户麦克风权限 是否需要授权:是 页面截图:
示例代码:
//获取全局唯一的录音管理器 RecorderManager
var recorderManager=wx.getRecorderManager();
const options = {
duration: 600000, //指定录音的时长,单位 ms
sampleRate: 16000, //采样率
numberOfChannels: 1, //录音通道数
encodeBitRate: 96000, //编码码率
format: 'mp3', //音频格式,有效值 aac/mp3
frameSize: 50, //指定帧大小,单位 KB
}
//开始录音
recorderManager.start(options);
//停止录音
recorderManager.stop();
//打印录音文件地址
recorderManager.onStop((res) => {
console.log('录音文件', res.tempFilePath);}
)
使用场景:语音社交 注意事项: 1、wx.startRecord()、wx.stopRecord为旧API,已停止维护 2、录音之前需要获取全局唯一的录音管理器,见示例代码
接口说明:从手机相册选择图片或使用相机拍照上传 是否需要授权:是 页面截图:
示例代码:
wx.chooseImage({
count: 1, //用户可上传的图片数量
sizeType: ['original', 'compressed'], //用户可选原图、压缩图
sourceType: ['album', 'camera'], //用户可选图片来源
success (res) {
console.log("打印本地临时文件路径列表",res.tempFilePaths);
}
})
使用场景:上传证件资料 注意事项: 1、如果要上传图片到云存储空间,可以通过wx.cloud.uploadFile()实现,在这不再展开; 2、如果要上传图片到开发者服务器,则用wx.uploadFile()实现上传,后端再进一步获取(如通过PHP的$_FILES)
wx.chooseImage({
count: 1, //用户可上传的图片数量
sizeType: ['original', 'compressed'], //用户可选原图、压缩图
sourceType: ['album', 'camera'], //用户可选图片来源
success: (res) => {
const tempFilePaths = res.tempFilePaths
wx.uploadFile({
url: 开发者服务器接口地址,
filePath: tempFilePaths[0],
name: 'file',
formData: {
'xxx': 'xxx'
},
success : (res) => {
//打印返回的数据
}
})
}
})
3、类似的接口还有wx.chooseMedia(),从手机相册选择图片、视频或使用相机拍摄
wx.chooseMedia({
count: 1,
mediaType: ['image','video'],
sourceType: ['album', 'camera'],
maxDuration: 30, //拍摄视频最长拍摄时间,单位秒
camera: 'back',
success: (res) => {
console.log("临时文件地址",res.tempFiles[0].tempFilePath);
console.log("临时文件大小",res.tempFiles[0].size);
}
})
接口1说明:调起摄像功能 是否需要授权:是 页面截图:
示例代码:
<!-- wxml -->
<!-- device-position="front"为前摄;
flash(闪光灯)的值可为auto(自动)、on(打开)、off(关闭)、torch(常亮) -->
<camera device-position="back" flash="off" binderror="error" style="width: 100%; height: 300px;"></camera>
<button type="primary" bindtap="takePhoto">拍照</button>
<image mode="widthFix" src="{{src}}"></image>
<!-- js -->
takePhoto() {
//创建 camera 上下文 CameraContext 对象
const ctx = wx.createCameraContext();
ctx.takePhoto({
quality: "high",
success: (res) => {
this.setData({
src: res.tempImagePath //照片地址赋值
})
}
})
}
使用场景:人脸识别 注意事项:1、同一页面只能有一个camera组件,不需要点击事件触发授权窗口; 2、拍摄照片接口为takePhoto,需要先创建CameraContext 对象,见示例代码
接口2说明:调起扫码功能 是否需要授权:否 页面截图:
示例代码:
wx.scanCode({
onlyFromCamera: true, //是否只能从相机扫码(是否不允许从相册选择图片)
success: (res) => {
console.log("内容",res.result);//常为网址或空
console.log("类型",res.scanType);//QR_CODE、WX_CODE等等
}
})
使用场景:扫码
接口说明:获取用户手机号码 是否需要授权:是 页面截图:
示例代码:
<!-- wxml -->
<button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber">获取手机号</button>
<!-- js -->
getPhoneNumber (e) {
console.log("加密算法的初始向量",e.detail.iv);
console.log("加密数据",e.detail.encryptedData);
console.log("云ID", e.detail.cloudID);
}
使用场景:获取联系方式 注意事项: 1、button组件的open-type值需要设置为getPhoneNumber,用户允许授权之后触发bindgetphonenumber事件返回相关加密信息和云ID; 2、后续在开发者服务器结合加密数据解密手机号,或通过云函数结合cloudID获取手机号码
接口说明:返回联系人姓名和电话 是否需要授权:否(需要用户选择联系人才返回信息) 页面截图:
示例代码:
wx.chooseContact({
success: (res) => {
console.log("姓名",res.displayName);
console.log("电话号码",res.phoneNumber);
}
})
使用场景:获取联系方式
注意事项:
部分安卓机返回特定联系人的所有手机号;
console.log("选定联系人手机号",res.phoneNumberList);
接口说明:返回用户的设备信息 是否需要授权:否 页面截图:
示例代码:
wx.getSystemInfo({
success (res) {
console.log("设备品牌", res.brand);
console.log("设备型号", res.model);
console.log("屏幕宽度", res.screenWidth);
console.log("屏幕高度", res.screenHeight);
console.log("语言设置", res.language);
console.log("微信版本", res.version);
console.log("操作系统及版本", res.system);
console.log("客户端平台", res.platform);
console.log("客户端基础库版本", res.SDKVersion);
console.log("蓝牙开关", res.bluetoothEnabled);
console.log("Wi-Fi开关", res.wifiEnabled);
console.log("宿主环境", res.host);
}
})
使用场景:处理兼容性 注意事项: 1、异步版本为wx.getSystemInfoAsync; 2、如果是刚推出的新机型,获取的设备品牌可能为unknown,需要等待微信适配
本文由哈喽比特于3年以前收录,如有侵权请联系我们。
文章来源:https://mp.weixin.qq.com/s/H1T3zWQKvT8m906hmUgS8w
京东创始人刘强东和其妻子章泽天最近成为了互联网舆论关注的焦点。有关他们“移民美国”和在美国购买豪宅的传言在互联网上广泛传播。然而,京东官方通过微博发言人发布的消息澄清了这些传言,称这些言论纯属虚假信息和蓄意捏造。
日前,据博主“@超能数码君老周”爆料,国内三大运营商中国移动、中国电信和中国联通预计将集体采购百万台规模的华为Mate60系列手机。
据报道,荷兰半导体设备公司ASML正看到美国对华遏制政策的负面影响。阿斯麦(ASML)CEO彼得·温宁克在一档电视节目中分享了他对中国大陆问题以及该公司面临的出口管制和保护主义的看法。彼得曾在多个场合表达了他对出口管制以及中荷经济关系的担忧。
今年早些时候,抖音悄然上线了一款名为“青桃”的 App,Slogan 为“看见你的热爱”,根据应用介绍可知,“青桃”是一个属于年轻人的兴趣知识视频平台,由抖音官方出品的中长视频关联版本,整体风格有些类似B站。
日前,威马汽车首席数据官梅松林转发了一份“世界各国地区拥车率排行榜”,同时,他发文表示:中国汽车普及率低于非洲国家尼日利亚,每百户家庭仅17户有车。意大利世界排名第一,每十户中九户有车。
近日,一项新的研究发现,维生素 C 和 E 等抗氧化剂会激活一种机制,刺激癌症肿瘤中新血管的生长,帮助它们生长和扩散。
据媒体援引消息人士报道,苹果公司正在测试使用3D打印技术来生产其智能手表的钢质底盘。消息传出后,3D系统一度大涨超10%,不过截至周三收盘,该股涨幅回落至2%以内。
9月2日,坐拥千万粉丝的网红主播“秀才”账号被封禁,在社交媒体平台上引发热议。平台相关负责人表示,“秀才”账号违反平台相关规定,已封禁。据知情人士透露,秀才近期被举报存在违法行为,这可能是他被封禁的部分原因。据悉,“秀才”年龄39岁,是安徽省亳州市蒙城县人,抖音网红,粉丝数量超1200万。他曾被称为“中老年...
9月3日消息,亚马逊的一些股东,包括持有该公司股票的一家养老基金,日前对亚马逊、其创始人贝索斯和其董事会提起诉讼,指控他们在为 Project Kuiper 卫星星座项目购买发射服务时“违反了信义义务”。
据消息,为推广自家应用,苹果现推出了一个名为“Apps by Apple”的网站,展示了苹果为旗下产品(如 iPhone、iPad、Apple Watch、Mac 和 Apple TV)开发的各种应用程序。
特斯拉本周在美国大幅下调Model S和X售价,引发了该公司一些最坚定支持者的不满。知名特斯拉多头、未来基金(Future Fund)管理合伙人加里·布莱克发帖称,降价是一种“短期麻醉剂”,会让潜在客户等待进一步降价。
据外媒9月2日报道,荷兰半导体设备制造商阿斯麦称,尽管荷兰政府颁布的半导体设备出口管制新规9月正式生效,但该公司已获得在2023年底以前向中国运送受限制芯片制造机器的许可。
近日,根据美国证券交易委员会的文件显示,苹果卫星服务提供商 Globalstar 近期向马斯克旗下的 SpaceX 支付 6400 万美元(约 4.65 亿元人民币)。用于在 2023-2025 年期间,发射卫星,进一步扩展苹果 iPhone 系列的 SOS 卫星服务。
据报道,马斯克旗下社交平台𝕏(推特)日前调整了隐私政策,允许 𝕏 使用用户发布的信息来训练其人工智能(AI)模型。新的隐私政策将于 9 月 29 日生效。新政策规定,𝕏可能会使用所收集到的平台信息和公开可用的信息,来帮助训练 𝕏 的机器学习或人工智能模型。
9月2日,荣耀CEO赵明在采访中谈及华为手机回归时表示,替老同事们高兴,觉得手机行业,由于华为的回归,让竞争充满了更多的可能性和更多的魅力,对行业来说也是件好事。
《自然》30日发表的一篇论文报道了一个名为Swift的人工智能(AI)系统,该系统驾驶无人机的能力可在真实世界中一对一冠军赛里战胜人类对手。
近日,非营利组织纽约真菌学会(NYMS)发出警告,表示亚马逊为代表的电商平台上,充斥着各种AI生成的蘑菇觅食科普书籍,其中存在诸多错误。
社交媒体平台𝕏(原推特)新隐私政策提到:“在您同意的情况下,我们可能出于安全、安保和身份识别目的收集和使用您的生物识别信息。”
2023年德国柏林消费电子展上,各大企业都带来了最新的理念和产品,而高端化、本土化的中国产品正在不断吸引欧洲等国际市场的目光。
罗永浩日前在直播中吐槽苹果即将推出的 iPhone 新品,具体内容为:“以我对我‘子公司’的了解,我认为 iPhone 15 跟 iPhone 14 不会有什么区别的,除了序(列)号变了,这个‘不要脸’的东西,这个‘臭厨子’。