在微信小程序中,从 2023 年 7 月开始,部分敏感接口(如 wx.getLocation)需要在 app.json 或 ext.json 中声明 requiredPrivateInfos 字段,否则调用时会失败并返回以下错误:
| |
解决方法 链接到标题
在 app.json 中添加 requiredPrivateInfos 字段,声明需要使用的地理位置接口。
修改 app.json
链接到标题
| |
详细步骤 链接到标题
在
app.json中添加requiredPrivateInfos:- 将
getLocation添加到requiredPrivateInfos数组中,表示需要使用wx.getLocation接口。
- 将
配置
permission:- 确保在
permission中配置了scope.userLocation,以便在用户授权后获取地理位置。
- 确保在
重新编译小程序:
- 修改
app.json后,重新编译并运行小程序。
- 修改
完整示例代码 链接到标题
app.json
链接到标题
| |
index.js
链接到标题
| |
index.wxml
链接到标题
| |
index.wxss
链接到标题
| |
注意事项 链接到标题
requiredPrivateInfos字段:- 必须在小程序的
app.json或ext.json中声明。 - 支持的接口包括:
getLocation、chooseLocation等。
- 必须在小程序的
用户授权:
- 首次调用
wx.getLocation时,会弹出授权提示框。如果用户拒绝授权,需要引导用户手动开启权限。 - 可以通过
wx.openSetting打开设置页面,让用户重新授权。
- 首次调用
隐私政策:
- 获取用户地理位置时,需遵守相关隐私政策,并在小程序中明确告知用户地理位置的使用目的。
示例效果 链接到标题
- 页面加载时自动获取用户的地理位置,并显示详细地址(包括省、市、区、街道等信息)。
- 点击按钮可以重新获取地理位置。
通过以上方法,你可以解决 getLocation:fail the api need to be declared in the requiredPrivateInfos field 的错误,并成功获取用户的地理位置。