尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

克服getLocation获取当前的地理位置,报错:getLocation:fail auth deny及方法封装

克服getLocation获取当前的地理位置,报错:getLocation:fail auth deny及方法封装
📅 发布时间:2026/6/18 17:15:01

问题描述

在开发微信小程序使用wx.getLocation或uni.getLocation获取当前的地理位置、速度的API时,会弹出如下的授权框,如果用户点了允许,那么就会获取到API提供的latitude纬度、longitude经度、speed速度等,但是点了拒绝就会报错:{errMsg: “getLocation:fail auth deny”},下面就将出错的问题以及开启手动授权的方法给大家介绍一下。
在这里插入图片描述

问题一:

如果出现下面的报错,这就说明没有在小程序配置项中设置requiredPrivateInfos。

{
errMsg: "getLocation:fail the api need to be declared in the requiredPrivateInfos field in app.json/ext.json"
}

解决办法:

如果是uniapp开发就需要到更目录下的manifest.json源码视图下配置,如果是微信小程序原生开发,需要到app.json中进行设置,如下:

"permission": {
"scope.userLocation": {
"desc": "你的位置信息将用于小程序位置接口的效果展示"
}
},
"requiredPrivateInfos": ["chooseLocation", "getLocation"]

将获取地理位置API的接口getLocation放置到requiredPrivateInfos属性中,详细的配置,可以参考这篇文章:https://blog.csdn.net/qq_18798149/article/details/150474651。

问题二:

如果出现下面的报错:

{
errMsg: "getLocation:fail auth deny"
}

这是在一开始概述时候说的,弹出获取位置授权框的时候,你点了拒绝,所有小程序就无法获取当前用户的位置信息,有同学可以使用了uni.getLocation的API什么错误都不显示,千万不要忘了fail回调,错误会在fail中,如下所示:

uni.getLocation({
type: 'gcj02',
success: (res) =>
{
console.log(res);
},
fail: (err) =>
{
console.log(err)
}
})

解决办法:
使用我下面封装的方法,让用户手动开启权限,这个方法是通用性的,因为在微信小程序开发中,会用到很多的权限需要用户进行授权,再去获取别的API授权的时候,也可以使用该方法,更多的权限范围可以看这个文档:https://uniapp.dcloud.net.cn/api/other/authorize.html

export const showAuthorize = ({ scope = 'scope.userLocation', text = '您的位置信息'
} = {
}) =>
{
return new Promise((resolve, reject) =>
{
uni.getSetting({
success: (setting) =>
{
if (!setting.authSetting[scope]) {
uni.showModal({
title: '提示',
content: `为了提供更好的服务,请允许小程序获取${text
}`,
confirmText: '去授权',
success: (modal) =>
{
if (modal.confirm) {
uni.openSetting({
success: (open) =>
{
if (open.authSetting[scope]) {
uni.showToast({
icon: 'none',
title: '授权成功'
});
resolve('授权成功');
} else {
uni.showToast({
icon: 'none',
title: '授权失败'
});
reject('授权失败');
}
}
});
} else {
reject('授权失败');
}
}
});
}
}
});
});
};

说明:
showAuthorize 方法接收一个对象;

  • scope:授权范围,可以授权常见的如:scope.userLocation、scope.address、scope.writePhotosAlbum
  • text:授权描述,如:‘保存到相册的权限’、‘您的位置信息’等

使用:

const getLocation = () =>
{
uni.getLocation({
type: 'gcj02',
success: (res) =>
{
console.log(res);
},
fail: async (err) =>
{
console.log(err);
try {
let res = await showAuthorize({
text: '您的位置信息'
});
getLocation();
} catch (err) {
console.log(err);
}
}
});
};

总结:

微信小程序需要用户授权的API还是挺多的,将手动授权的方法进行封装,后期再用的时候,直接调用接口,如果你对该方法封装有更好的建议,欢迎留言讨论。

相关新闻

  • 电流探头的测试原理
  • p1-1002
  • Java中 String、StringBuilder 和 StringBuffer 的区别? - 指南

最新新闻

  • TC1043低功耗模拟前端芯片:集成运放、比较器与基准源的电路设计实战
  • 2026年开源大模型架构解析:Transformer演进与实操选型指南
  • 铜川黄金回收门店走访纪实 六家靠谱商家实测一览 - 余生黄金回收
  • 2026年深圳市银河领航智能科技发展有限公司深度解析:低空维保场景技术人才短缺与培养成本高 - 品牌推荐
  • 商务车旧内饰翻新,驰克车改靠谱推荐,价格合理 - 工业品网
  • 实地走访忻州黄金回收门店 2026年6月测评报告 - 余生黄金回收

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号