设置API:wx.openSetting,wx.getSetting使用说明(示例:地图授权与取消授权后的重新授权)
2021-05-17 11:30
标签:cells ice 打印 ado ace 判断 cancel link 打开 这个API解决了过去一个长久以来无法解决的问题,如何让用户重复授权;
如下是我的真实示例: 设置API:wx.openSetting,wx.getSetting使用说明(示例:地图授权与取消授权后的重新授权) 标签:cells ice 打印 ado ace 判断 cancel link 打开 原文地址:https://www.cnblogs.com/zmdComeOn/p/11778225.html打开小程序的设置界面:就是主动调取授权
目前资料极少,但是已经可以让大家先看看了;
官方文档地址:https://mp.weixin.qq.com/debug/wxadoc/dev/api/setting.html#opensettingobject
目前的授权影响范围:
scope
对应接口
scope.userInfo
wx.getUserInfo
scope.userLocation
wx.getLocation, wx.chooseLocation
scope.address
wx.chooseAddress
scope.record
wx.startRecord
相关文章:
微信小程序重新调起授权用户信息,扫码进入小程序获取二维码携带参数
wx.openSetting,wx.setClipboardData,wx.getClipboardData
微信小程序最新更新--api测试一览
微信小程序之新版本测试
相关讨论:
wx.openSetting()怎么判断success里面 用户有没有授权了我写的
wx.openSetting
(
{
success
:
(
res
)
=
>
{
console.
log
(
"授权结果.."
)
console.
log
(
res
)
if
(
!res.authSetting.scope.userInfo || !res.authSetting.scope.userLocation
)
{
applyNotice
(
)
}
}
}
)
不正常啊,res的authSetting两个对象,两个对象的键名是scope.userInfo和scope.userLocation都是带了 . 的,怎么判断用户都授权了呢?我的小程序需要用户授权才能使用服务呢。做的事基于LBS的共享服务,没有定位和用户登录,就无法获取服务器上的区域划分的数据。用户就看不了自己周围的地图和自己的用户信息
wx.openSetting
(
{
success
:
(
res
)
=
>
{
console.
log
(
"授权结果.."
)
console.
log
(
res
)
if
(
!res.authSetting[
"scope.userInfo"
] || !res.authSetting[
"scope.userLocation"
]
)
{
applyNotice
(
)
}
}
}
)
试试上述改动。
相关讨论:
用户取消后如何再次调出允许授权的modal?
如果用户错点了拒绝,就没办法再继续进入使用小程序了。能重新再调出许可的小窗让用户重新再选择吗?
答:林超
用户如果不小心拒绝了授权,之前是过十分钟之后还可以被唤醒,最近发现唤不醒了,一直是:"getUserInfo:fail auth deny",该如何应对?
答:Tïedào//如下,在getUserInfo失败后调用wx.openSetting即可
// pages/contactus/contactus.js
var app = getApp()
Page({
/**
* 页面的初始数据
*/
data: {
loadingHidden: false,
latitude: 23.099994,
longitude: 113.324520,
markers: [{
iconPath: ‘../../images/location.png‘,
id: 1,
latitude: 31.245442,
longitude: 121.506337,
title: ‘千卉摄影‘,
width: 50,
height: 50,
callout: {
content: ‘千卉摄影‘,
color: ‘#ff00000‘,
fontSize: ‘18‘,
borderRadius: ‘5‘,
bgColor: ‘#ffffff‘,
padding: ‘10‘,
display: ‘ALWAYS‘,
textAlign: ‘center‘
}
}],
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
var that = this
wx.getSystemInfo({
success: function (res) {
// console.log(res)
that.setData({
scrollHeight: res.windowHeight
});
}
});
wx.getSetting({
success(res) {
console.log(!res.authSetting[‘scope.userLocation‘]);
if (!res.authSetting[‘scope.userLocation‘]) {
wx.authorize({
scope: ‘scope.userLocation‘,
success() {
// 用户已经同意
//其他操作...
console.log("用户已经同意位置授权");
},
fail() {
console.log("用户已经拒绝位置授权");
that.openConfirm();//如果拒绝,在这里进行再次获取授权的操作
}
})
}
//其他操作..
}
});
},
//当用户第一次拒绝后再次请求授权
openConfirm: function () {
wx.showModal({
content: ‘检测到您没打开此小程序的定位权限,是否去设置打开?‘,
confirmText: "确认",
cancelText: "取消",
success: function (res) {
console.log(res);
//点击“确认”时打开设置页面
if (res.confirm) {
console.log(‘用户点击确认‘)
wx.openSetting({
success: (res) => { }
})
} else {
console.log(‘用户点击取消‘)
}
}
});
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function (e) {
this.mapCtx = wx.createMapContext(‘myMap‘)
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
var that = this
app.reqGetfunc.reqGet(‘qh_contact.html‘, {}, function (res) {
// console.log(res)
that.setData({
tel: res.tel,
address: res.address,
map: res.map,
qq: res.qq,
wechat: res.wechat,
code: res.code,
loadingHidden: true
})
})
},
getLocation:function(){
var that = this
wx.getSetting({
success(res) {
console.log(res)
if (!res.authSetting[‘scope.userLocation‘]) {
wx.authorize({
scope: ‘scope.userLocation‘,
success() {
// 用户已经同意小程序使用此功能,后续调用 wx.getLocation 接口不会弹窗询问
wx.getLocation({
type: ‘gcj02‘,
success: function (res) {
//console.log(res)
var latitude = res.latitude
var longitude = res.longitude
var speed = res.speed
var accuracy = res.accuracy
console.log("latitude:" + latitude)
console.log("longitude:" + longitude)
console.log("speed:" + speed)
console.log("accuracy:" + accuracy)
wx.openLocation({
name: ‘山东省‘,
address: ‘山东省临沂市千卉摄影‘,
//latitude: latitude,
//longitude: longitude,
latitude: Number(that.data.map.latitude),
longitude: Number(that.data.map.longitude),
scale: 28
})
}
})
},
fail() {
console.log("用户已经拒绝位置授权");
that.openConfirm();//如果拒绝,在这里进行再次获取授权的操作
}
})
}
}
})
},
chooseLocation:function(){
wx.getSetting({
success(res) {
if (!res.authSetting[‘scope.userLocation‘]) {
wx.authorize({
scope: ‘scope.userLocation‘,
success(){
wx.chooseLocation({
success: function (res) {
var name = res.name
var address = res.address
var latitude = res.latitude
var longitude = res.longitude
}
})
}
})
}
},
fail() {
console.log("用户已经拒绝位置授权");
that.openConfirm();//如果拒绝,在这里进行再次获取授权的操作
}
})
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
}
})
文章标题:设置API:wx.openSetting,wx.getSetting使用说明(示例:地图授权与取消授权后的重新授权)
文章链接:http://soscw.com/index.php/essay/86700.html