这个API解决了过去一个长久以来无法解决的问题,如何让用户重复授权;

打开小程序的设置界面:就是主动调取授权

目前资料极少,但是已经可以让大家先看看了;

官方文档地址:https://mp.weixin.qq.com/debug/wxadoc/dev/api/setting.html#opensettingobject

基础库版本 1.1.0 开始支持,低版本需做兼容处理
调起客户端小程序设置界面,返回用户设置的操作结果

目前的授权影响范围:

scope 说明:
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里面 用户有没有授权了我写的

[AppleScript] 纯文本查看 复制代码
1
2
3
4
5
6
7
8
9
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的共享服务,没有定位和用户登录,就无法获取服务器上的区域划分的数据。用户就看不了自己周围的地图和自己的用户信息

[AppleScript] 纯文本查看 复制代码
1
2
3
4
5
6
7
8
9
wx.openSetting({
      success:(res)=>{
          console.log("授权结果..")
        console.log(res)
        if(!res.authSetting["scope.userInfo"] || !res.authSetting["scope.userLocation"]){
            applyNotice()
        }
      }
    })

试试上述改动。

打印出来的console的可以判断了,对象还可以像数组一样键值调用,谢谢啦!
 

相关讨论:
用户取消后如何再次调出允许授权的modal?
如果用户错点了拒绝,就没办法再继续进入使用小程序了。能重新再调出许可的小窗让用户重新再选择吗?
答:林超

使用 wx.openSetting接口
相关讨论:
关于用户授权界面的唤醒
用户如果不小心拒绝了授权,之前是过十分钟之后还可以被唤醒,最近发现唤不醒了,一直是:"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使用说明(示例:地图授权与取消授权后的重新授权)的更多相关文章

  1. 小程序获取地址授权的修改 wx.openSetting需点击

    开发者可以通过 wx.openSetting 接口来打开小程序设置界面并返回用户的设置结果.在原来的 wx.openSetting 接口中,我们允许开发者直接调用此接口,但目前我们发现有不少开发者滥用 ...

  2. [转]微信小程序联盟 跳坑《一百八十一》设置API:wx.openSetting使用说明

    本文转自:http://www.wxapp-union.com/forum.php?mod=viewthread&tid=4066 这个API解决了过去一个长久以来无法解决的问题,如何让用户重 ...

  3. 微信小程序(mpvue) wx.openSetting 无法调起设置页面

    在开发过程有个需要保存图片/视频到设备相册的业务,so easy~   巴啦啦撸下来了完整功能, wx.saveVideoToPhotosAlbum 会自动调起用户授权,美滋滋~~   btu.... ...

  4. 微信小程序-用户拒绝授权使用 wx.openSetting({}) 重新调起授权用户信息

    场景模拟:用户进入微信小程序-程序调出授权 选择拒绝之后,需要用到用户授权才能正常使用的页面,就无法正常使用了. 解决方法:在用户选择拒绝之后,弹窗提示用户 拒绝授权之后无法使用,让用户重新授权(微信 ...

  5. 微信小程序API交互反馈,wx.showToast显示消息提示框

    导读:wx.showToast(OBJECT) 显示消息提示框. OBJECT参数说明: 参数 类型 必填 说明 最低版本 title String 是 提示的内容 icon String 否 图标, ...

  6. 微信授权 - wx.openSetting

    wx.openSetting({   // 唤醒授权页面    success: res => {       console.log('res',res) // 授权成功操作    },   ...

  7. 微信JS-SDK“分享信息设置”API及数字签名生成方法(NodeJS版本)

    原文:微信JS-SDK"分享信息设置"API及数字签名生成方法(NodeJS版本) 先上测试地址以示成功: 用微信打开下面地址测试 http://game.4gshu.com/de ...

  8. 小程序中navigator和wx.navigateTo,wx.redirectTo,wx.reLaunch,wx.switchTab,wx.navigateBack的用法

    如果用一句话来表明navigator和API中wx.系列的跳转有什么区别,那就是navigator是在wxml中用标签添加open-type属性来达到和wx.系列一样的效果. navigator的属性 ...

  9. 微信 小程序 drawImage wx.canvasToTempFilePath wx.saveFile 获取设备宽高 尺寸问题

    以下问题测试环境为微信开发者0.10.102800,手机端iphone6,如有不对敬谢指出. 根据我的测试,context.drawImage,在开发者工具中并不能画出来,只有预览到手机中显示. wx ...

随机推荐

  1. System.out.println高并发下导致应用暂停

    今天在进行序列号压测的时候,通过调用genSeqId方法来获取序列号,100并发,16台压测机器,发现无论怎么压测,调用量达到140w左右的时候,此方法的ops直接掉到了0,具体图示如下: 从上图可以 ...

  2. IT兄弟连 HTML5教程 在移动设备上设置原始大小显示

    在iPhone系列和iPod Touch中使用的是Safari浏览器,它支持前面介绍的媒体查询表达式.例如,使用iPhone 320px×480px的分辨率去访问我们前面的布局示例,却无法得到我们想看 ...

  3. css实现内容不相同的左右两个div等高

    问题提出 现在有两个div左右排列,但是两个div的内容不相同,如何设置两个div的css做到在两个div等高排列呢? 下面是网上找的3种实现方法,觉得很有代表性,所以索性收藏起来. 方法一 通过父元 ...

  4. css实现图片动画效果

    需求 项目里有个消息中心,当有消息的时候,小铃铛图标可以晃两下,提示当前有信息. 实现过程 书写css 使用css的keyframe属性,配合animation. @keyframes ringing ...

  5. CSS 利用 `padding-bottom` 实现固定比例的容器

    复用 padding-bottom 可实现一块区域在窗口尺寸变化使始终保持自适应.对于响应式布局中的图片或视频来说比较有用. <div style="width: 100%; posi ...

  6. How to: Implement File Data Properties 如何:实现文件数据属性

    This topic demonstrates how to implement a business class with a file data property and a file colle ...

  7. arcgis api for javascript 学习(一) 调用在线发布的动态地图

    1.图中显示为arcgis软件中显示的地图文件 2.调用动态地图主要的是知道动态地图的URL地址 3.通过IDE(webstorm)调用动态地图,如图 4.话不多说,直接上代码 <!DOCTYP ...

  8. 从0系统学Android--3.2四种基本布局

    从0系统学Android--3.2四种基本布局 本系列文章目录:更多精品文章分类 本系列持续更新中.... 3.3 系统控件不够用?创建自定义控件 上一节我们学习了 Android 中的一些常用的控件 ...

  9. golang.org 安装脚本

    #!/usr/bin/env bash cd $GOPATH; #创建 $GOPATH/src/golang.org/x 目录 mkdir -p $GOPATH/src/golang.org/x; e ...

  10. 腾讯 Techo 开发者大会首发来袭!云原生中间件技术实践等你来!

    腾讯 Techo 开发者大会是由腾讯云发起的面向全球开发者和技术爱好者的年度盛会,2019 年 11 月 6 日 - 7 日将在北京嘉里大酒店首次召开. 作为一个专注于前沿技术研讨的非商业大会,Tec ...