项目场景:

调用uni.chooseAddress() api获取收货人的信息


问题描述

在PC的微信开发者工具调试 uni.chooseAddress() 接口没发现报错,操作流程正常

但是真机调试 uni.chooseAddress() 接口调用失败,err 报错,这里需要注意的是这个“张三”的信息是微信提供的默认地址

errMsg: "chooseAddress:fail the api need to be declared in …e requiredPrivateInfos field in app.json/ext.json"}errMsg: "chooseAddress:fail the api need to be declared in the requiredPrivateInfos field in app.json/ext.json"__proto__: Object
  // 选择收货地址async chooseAddress() {// 调用小程序提供的 chooseAddress() 方法,即可使用选择收货地址的功能//    返回值是一个数组:第 1 项为错误对象;第 2 项为成功之后的收货地址对象const [err, succ] = await uni.chooseAddress().catch(err => err)if(err !==null){uni.$showMsg('接口调用失败')}// 用户成功的选择了收货地址if (err === null && succ.errMsg === 'chooseAddress:ok') {// 为 data 里面的收货地址对象赋值// this.address = succ// 调用 Store 中提供的 updateAddress 方法,将 address 保存到 Store 里面this.updateAddress(succ)}// 用户没有授权  -- 如果在选择收货地址的时候,用户点击了取消授权,则需要进行特殊的处理,否则用户将无法再次选择收货地址!if (err && (err.errMsg === 'chooseAddress:fail auth deny' || err.errMsg ==='chooseAddress:fail authorize no response')) {this.reAuth()}},

原因分析:

wx.chooseAddress(Object object)

功能描述

获取用户收货地址。调起用户编辑收货地址原生界面,并在编辑完成后返回用户选择的地址。

使用方法

自 2022 年 7 月 14 日后发布的小程序,若使用该接口,需要在 app.json 中进行声明,否则将无法正常使用该接口,2022年7月14日前发布的小程序不受影响。具体规则见公告

申请开通

暂只针对具备与地理位置强相关的使用场景的小程序开放,在小程序管理后台,「开发」-「开发管理」-「接口设置」中自助开通该接口权限。 接口权限申请入口将于2022年3月11日开始内测,于3月31日全量上线。并从4月18日开始,在代码审核环节将检测该接口是否已完成开通,如未开通,将在代码提审环节进行拦截。


解决方案:

1.在小程序管理后台,「开发」-「开发管理」-「接口设置」中自助开通wx.chooseAddress(Object object)接口权限

2.如果是使用原生的微信小程序写的则需要在 app.json 中进行声明

我是用uniapp写的,所以打开 manifest.json 文件

在 mp-weixin 里面添加

最后保存编译运行就可以了

收货地址功能核心代码: 

   // 选择收货地址async chooseAddress() {// 调用小程序提供的 chooseAddress() 方法,即可使用选择收货地址的功能//    返回值是一个数组:第 1 项为错误对象;第 2 项为成功之后的收货地址对象const [err, succ] = await uni.chooseAddress().catch(err => err)// const [err, succ] = await wx.chooseAddress().catch(err => err)if(err !==null){uni.$showMsg('接口调用失败')}// 用户成功的选择了收货地址if (err === null && succ.errMsg === 'chooseAddress:ok') {// 为 data 里面的收货地址对象赋值// this.address = succ// 调用 Store 中提供的 updateAddress 方法,将 address 保存到 Store 里面this.updateAddress(succ)}// 用户没有授权  -- 如果在选择收货地址的时候,用户点击了取消授权,则需要进行特殊的处理,否则用户将无法再次选择收货地址!if (err && (err.errMsg === 'chooseAddress:fail auth deny' || err.errMsg ==='chooseAddress:fail authorize no response')) {this.reAuth()}},// 调用此方法,重新发起收货地址的授权async reAuth() {// 3.1 提示用户对地址进行授权const [err2, confirmResult] = await uni.showModal({content: '检测到您没打开地址权限,是否去设置打开?',confirmText: "确认",cancelText: "取消",})// 3.2 如果弹框异常,则直接退出if (err2) return// 3.3 如果用户点击了 “取消” 按钮,则提示用户 “您取消了地址授权!”if (confirmResult.cancel) return uni.$showMsg('您取消了地址授权!')// 3.4 如果用户点击了 “确认” 按钮,则调用 uni.openSetting() 方法进入授权页面,让用户重新进行授权if (confirmResult.confirm) return uni.openSetting({// 3.4.1 授权结束,需要对授权的结果做进一步判断success: (settingResult) => {// 3.4.2 地址授权的值等于 true,提示用户 “授权成功”if (settingResult.authSetting['scope.address']) return uni.$showMsg('授权成功!请选择地址')// 3.4.3 地址授权的值等于 false,提示用户 “您取消了地址授权”if (!settingResult.authSetting['scope.address']) return uni.$showMsg('您取消了地址授权!')}})},

记录 - 收货地址的坑相关推荐

  1. Django项目实践(商城):十一、收货地址

    (根据居然老师直播课内容整理) 一.页面功能简介 在"用户中心"的任一界面,点击左边"收货地址"后,显示下面界面 此界面包括以下4个功能: 新增收货地址 删除当 ...

  2. DRF 商城项目 - 用户操作(收藏, 留言, 收货地址)

    个人收藏 整体逻辑类似于 个人中心 ( 个人中心的相关逻辑梳理详情  点击这里 ) 也是两个序列化组价的分流 查看收藏  ( list ) 详情指向 收藏详情 的组价 创建收藏 ( create ) ...

  3. jssdk 获取微信收货地址_微信收货地址共享开发接口讲解

    写在前面的话:微信开发者文档写的比较清楚,也不容易出错,可是偏偏收货地址共享那儿写的比较绕,同时也会有很多坑,这里总结一下. ======正文开始====== 微信收货地址共享开发接口基本使用场景是: ...

  4. 微信收货地址开发分享

    微信支付做了有一定时间了,现在就来做一些知识的总结,总体来说微信支付的文档不是非常的完美,其中存在一些问题.虽然坑很多,但是还是把问题解决了. 微信支付的收货地址共享功能,主要是统一的管理微信用户个人 ...

  5. 设置默认收货地址【项目 商城】

    设置默认收货地址[项目 商城] 设置默认收货地址 1. 持久层 1.1 规划SQL语句 1.2 设计抽象方法 1.3 配置SQL映射 测试 2.业务层 2.1 异常规划 2.2 抽象方法 2.3 实现 ...

  6. mysql收货地址表_收货地址表结构 以及创建修改流程

    创建收货地址的过程中, 一共涉及到三张表 一张为PostalAddress  contact_mech    party_contact_mech 创建的流程  调用createPartyPostal ...

  7. Java 收货地址智能解析

    收货地址智能解析 省市区县文件下载地址:china-area.json TreeUtils 地址:Java 万物皆可 Tree 工具类 BaseEnum 地址:枚举字典管理器 基础类:AreaTree ...

  8. PHP智能解析收货地址

    有问题,可以加入讨论群 QQ群:825042078 这段代码可以实现剥离出:身份证号,手机号,座机号,右边,同时出去字符里面的一些干扰词,只留下用于解析的详细地址 然后详细地址可以,通过第二段程序,分 ...

  9. SpringBoot电脑商城-收货地址

    收货地址 1. 新增收获地址 1.1 数据库表创建 1.2 创建实体类 1.3 持久层 1.4 业务层 1.5 控制层 1.6 前端页面 2. 获取省市区列表 2.1 数据库表 2.2 实体类 2.3 ...

最新文章

  1. 线性回归之数学:求导公式
  2. 【Android】Retrofit 2.0 的使用
  3. Tomcat创建一个windows服务
  4. Python 技术篇-3行代码搞定图像文字识别,pytesseract库实现
  5. You C.A.N.大赛 解锁7大行业智能硬件创新密码
  6. 2018 CVPR GAN 相关论文调研
  7. SAP Spartacus 中的依赖注入 Dependency Injection 介绍
  8. JS之数组删除/添加项目方法splice
  9. redis 3.0 java 工具包_redis分布式锁工具包,提供纯Java方式调用
  10. python网络监控程序_python linux监控程序
  11. c语言指数怎么表示_Assembly 浮点表示法
  12. Gstreamer官方教程汇总2---GStreamer concepts
  13. linux怎么建立链接文件,Linux 建立文件夹的链接
  14. iredmail mysql 配置_Iredmail各大组件连接Mysql配置说明
  15. 服务器晚上自动重启是什么原因,服务器经常自动重启是什么原因
  16. 启动定时器t0的工作指令是_启动定时器 0 工作的指令是使 TCON 的 ( )_学小易找答案...
  17. Oracle 基本SQL语句
  18. 【JavaLearn】 # (2)类和对象、变量、构造方法、普通方法、this关键字
  19. css实现波浪球效果图,用css实现圆形波浪效果图
  20. 字节、字、bit、byte到底咋回事

热门文章

  1. 计算机在科学研究上的意义,浅谈自然辩证法对计算机科学研究的意义
  2. 2013年图灵奖得主Leslie Lamport:如何写出数学上完美的算法
  3. AcWing算法提高课-3.1.1热浪
  4. shiro中devtools:java.lang.ClassCastException: cn.model.User cannot be cast to cn.model.User
  5. ticktock卖给oracle,ticktock第三章怎么过 ticktock第三章玩家一通关攻略
  6. C++标准模板库之map及pair
  7. Tomcat环境变量配置
  8. Avalon总线(一)Avalon-MM Signals
  9. 人脸超分辨率阅读论文汇总
  10. 移动端div背景图出现白边