open device failSetting:fail 此接口已废弃,请使用 open device failSetting 组件

[转]微信小程序联盟 跳坑《一百八十一》设置API:wx.openSetting使用说明 - freeliver54 - 博客园
随笔 - 2653, 文章 - 3, 评论 - 2415, 引用 - 157
本文转自:
这个API解决了过去一个长久以来无法解决的问题,如何让用户重复授权;
打开小程序的设置界面:就是主动调取授权
目前资料极少,但是已经可以让大家先看看了; 官方文档地址:
基础库版本 1.1.0 开始支持,低版本需做
微信客户端 6.5.6 版本开始支持
调起客户端小程序设置界面,返回用户设置的操作结果
目前的授权影响范围:
scope 说明:
scope.userInfo
wx.getUserInfo
scope.userLocation
wx.getLocation, wx.chooseLocation
scope.address
wx.chooseAddress
scope.record
wx.startRecord
相关文章:
相关讨论: wx.openSetting()怎么判断success里面 用户有没有授权了我写的
[AppleScript] 纯文本查看 复制代码
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] 纯文本查看 复制代码
wx.openSetting({
&&&&&&success:(res)=&{
&&&&&&&&&&console.log("授权结果..")
&&&&&&&&console.log(res)
&&&&&&&&if(!res.authSetting["scope.userInfo"] || !res.authSetting["scope.userLocation"]){
&&&&&&&&&&&&applyNotice()
试试上述改动。
打印出来的console的可以判断了,对象还可以像数组一样键值调用,谢谢啦!
相关讨论:
用户取消后如何再次调出允许授权的modal?
如果用户错点了拒绝,就没办法再继续进入使用小程序了。能重新再调出许可的小窗让用户重新再选择吗?
相关讨论:
关于用户授权界面的唤醒 用户如果不小心拒绝了授权,之前是过十分钟之后还可以被唤醒,最近发现唤不醒了,一直是:"getUserInfo:fail auth deny",该如何应对?
答:T&ed&o
//如下,在getUserInfo失败后调用wx.openSetting即可用户授权拒绝处理方案 - 简书
用户授权拒绝处理方案
在我的第一篇文章中,有介绍我们项目采用静默登录,在某些需要获取用户头像昵称等信息的页面,才去进行授权操作。根据需求我们以用户昵称是否为空作为是否授权判断标准,为空则需要用户进行授权获取用户信息,授权成功再调用服务器接口更新本地存储的相关用户信息,再做相关的业务逻辑处理的。
实现用户授权获取信息其实也很简单,查阅微信小程序API,可以发现调用 wx.getUserInfo() 即可实现,只要默认参数该接口可以完全独立于wx.login() 使用,因为不需要判断登录态是否过期问题,鉴于方便处理,我们项目登录时不做session检验,也就是说不需要考虑登录态状态。
所以一开始我采用了最简单的方法,在wxml使用button实现,设置button的 open-type="getUserInfo"属性,只需要在wxml中绑定事件处理点击之后的业务逻辑,这样有个好处就是,只要没授权每次都会弹出授权,可以不用去处理授权弹窗只弹一次用户拒绝授权后如何开启的问题。没授权时点击按钮效果如图1:
可是,在其他页面也需要根据用户是否授权处理业务逻辑,而且这个判断逻辑是在点击切换tab进入页面就需要处理,没法绑定在具体的某个button上实现。为保证代码尽可能重用和授权弹窗处理各处保持一致,决定封装一个方法放在common.js文件中。其他地方使用时,只需调用 common.getCurUserInfo(success, fail) ,该方法只需传2个callback去处理授权成功和失败后逻辑,能更好的将重心转移到业务层面,避免开发过程中频繁判断是否授权和关注授权处理等相关的一系列问题,如:首次授权弹窗选择拒绝后,如何保证用户后期设置开启授权以及如何友好优化提示。而且我们项目是鼓励用户去授权的,因为不授权很多业务会无法进行。
某个页面使用view或者button实现绑定事件处理授权可以参考我的wxml代码:
&view class='red-package-phone'&
&!-- 采用组件button实现 --&
&view wx:if="{{!resumeInfo.phone}}" class='red-package'&
&button wx:if="{{!resumeInfo.isShowPhone}}" class='red-package' open-type="getUserInfo" bindtap="sendRedPacket"&
&image src='/image/redpack.png'&&/image&
发红包查看手机号
&!-- 采用组件view实现 --&
&!-- &view wx:if="{{!resumeInfo.phone}}" class='red-package' bindtap="sendRedPacket"&
&image src='/image/redpack.png'&&/image&
发红包查看手机号
&/view& --&
&view wx:else class='phone' bindtap="callPhone"&
&image src='/image/phone.png' mode="aspectFill"&&/image&
{{resumeInfo.phone}}
关于授权获取用户信息的js代码如下:
* 授权获取用户信息
* 处理逻辑:根据userInfo.name是否为空判断是否授权
* userInfo.name ="" =& 进行授权获取用户信息
* userInfo.name !="" =& 即已授权,调用success回调
* @param success 授权获取用户信息成功的业务逻辑处理
* @param fail 授权获取用户信息失败的业务逻辑处理
var getCurUserInfo = function (success, fail) {
* 方法1: 使用组件button实现:设置button open-type="getUserInfo",未允许则每次都会弹出授权弹框
if (!getApp().globalData.userInfo.name) {
wx.getSetting({
success(res) {
wx.getUserInfo({
success: function (res) {
//获取用户信息成功后,调用服务器接口更新用户相关信息
updateUserInfo(res.userInfo, success)
fail: function (res) {
console.log('用户选择拒绝授权获取用户信息')
fail(res) {
success(getApp().globalData.userInfo)
* 方法2: 使用组件view实现:首次弹出授权弹框,选择允许后不再弹,选择拒绝后下次弹出提示进设置页面开启授权
if (!getApp().globalData.userInfo.name) {
wx.getSetting({
success(res) {
console.log(res.authSetting);
var authSetting = res.authS
if (isEmptyObject(authSetting['scope.userInfo'])) {
//首次授权,弹授权提示框,注意只会弹一次
wx.authorize({
scope: 'scope.userInfo',
success() {
wx.getUserInfo({
success: function (res) {
//获取用户信息成功后,调用服务器接口更新用户相关信息
updateUserInfo(res.userInfo, success)
fail: function (res) {
console.log('用户选择拒绝授权获取用户信息')
console.log('调用authorize方法失败')
wx.showModal({
title: '用户未授权',
content: '如需正常使用微信红包支付,请按确定并在授权管理中选中“用户信息”,然后点按确定。最后再重新进入小程序即可正常使用。',
showCancel: false,
success: function (res) {
if (res.confirm) {
wx.openSetting({
success: function success(res) {
console.log('调用openSetting方法success:', res);
fail: function (res) {
console.log('调用openSetting方法fail:', res);
}, complete: function (res) {
console.log('调用openSetting方法complete:', res);
//首次授权选择拒绝后,为保证未授权时下次能弹出提示弹窗的处理
if (!authSetting['scope.userInfo']) {
wx.showModal({
title: '用户未授权',
content: '如需正常使用微信红包支付,请按确定并在授权管理中选中“用户信息”,然后点按确定。最后再重新进入小程序即可正常使用。',
showCancel: false,
success: function (res) {
if (res.confirm) {
wx.openSetting({
success: function success(res) {
console.log('调用openSetting方法success:', res);
fail: function (res) {
console.log('调用openSetting方法fail:', res);
}, complete: function (res) {
console.log('调用openSetting方法complete:', res);
wx.getUserInfo({
success: res =& {
updateUserInfo(res.userInfo, success)
fail(res) {
console.log('调用openSetting方法失败:', res)
fail(res) {
console.log('调用getSetting方法失败:', res)
success(getApp().globalData.userInfo)
采用方法2, 首次选择了拒绝后会弹提示弹窗,点击确定会跳转到设置页面,可以开启授权。
拒绝授权后点发红包按钮效果如图2:
点提示用户未授权弹窗确定按钮效果如图3:
至此授权获取用户信息在本项目中都统一成图1-3的效果了。总结下:
1、简单快捷实现方式:推荐用button设置 open-type="getUserInfo" 属性,即方法1,只需绑定事件处理业务逻辑,这种方式能保证每次都弹授权弹窗;
2、较为复杂实现方式:不依赖button组件,任何元素或者非元素绑定时,考虑方法2,这种方式授权弹窗只会在首次出现,拒绝可以自定义提示弹窗引导用户在设置页面进行授权。
爱笑爱疯的女汉子程序媛一枚,偶尔会有点小文艺,喜欢养花下厨看电影,轻度强迫症患者(?????????)
背景小程序一个比较重要的能力就是获取用户信息,也就是使用 wx.getUserInfo接口。我们发现几乎所有的小程序都会调用这个接口。虽然我们在设计文档上有提出最好的设计是在真正要用户信息的情况下才去获取用户信息,不过很多开发者并没有按照我们的期望去做,导致用户在使用的时候...
用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你能获得这些料: 知道setContentView()之后发生了什么? ... Android 获取 View 宽高的常用正确方式,避免为零 - 掘金 相信有很多...
用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金Cover 有什么料? 从这篇文章中你能获得这些料: 知道setContentView()之后发生了什么? ... Android 获取 View 宽高的常用正确方式,避免为零 - 掘金相信有很多朋友...
转载链接 注:本文转载知乎上的回答 作者:初雪 链接:https://www.zhihu.com/question//answer/ 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 微信小程序正式公测,张小...
注:本文转载知乎上的回答 作者:初雪跑狗图 链接:https://www.zhihu.com/question//answer/ 来源:知乎六合 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 微信小程序正式公测,张小...
大家终于盼来了双11购物节。仅用了6分钟58秒,阿里巴巴平台的交易额冲破100亿元,其中无线交易额占比达85%以上。移动端已经彻底超过pc端,成为网络消费方式的主流。绝大部分的消费者的购物行为已经转移到移动端。 电商通过与直播、网红的深度融合。不仅能吸引到高忠诚度的粉丝用户...
姓名:严露露 公司:宁波大发化纤有限公司 《六项精进》289期反省一组学员 【日精进打卡第38天】 【知~学习】 《六项精进》大纲: 背诵 1遍 《六项精进》通篇:0 遍 《大学》:1遍 【经典名句分享】 业精于勤荒于嬉。 【行~践行】 一、修身 晨起一杯温开水; 午睡; ...
文/玄霄 —— 1节 李秋水,是金庸笔下塑造的一个女性角色,同时也是当世有数的绝顶高手之一,被武侠迷称为“逍遥三老”。其他两老,分别是天山童姥和无崖子。 关于李秋水的人物生平,玄霄就不一一赘述了,想必各位武侠迷都耳熟能详。今天咱们就玩儿点新的,说说李秋水是怎样报复渣男的。 ...
我问苏先生在一起的这些年,经历了这么多大大小小的事情,印象最深刻的是哪件。他转头告诉我,一次无家可归,一次入室抢劫。 在经历的这么多事情中,比这悲比这苦的或许还有很多已然不记得了。但是无家可归和入室抢劫对于我也是印象尤为深刻。 刚毕业那年,在烟台租房子过活。身为外地烟漂人自...
七月七 农历六月十四 小暑 至夏至刚好十六天 夏天如期而至,人生充满意外 《夏至未至》里颜末哭着对颜大壮说:人生是不是经历了低谷之后会慢慢好起来的? “也不一定” “你就不能安慰安慰我,骗骗我么,说慢慢地会好起来的” 这个时候,我觉得颜末好可爱。 我们一边还是被父母宠上天的...最美的你 不是生如夏花 而是在时间的长河里 波澜不惊。
微信小程序如何再次获取用户授权
现在在做一个小程序有地图的功能,通过点击按钮打开地图。调用wx.getlocation()这个接口是需要用户的授权。如果他授权了,返回一个success当然最好啦,就什么问题都没有了。如果他点了取消,返回一个fail,我就使用预设的经纬度打开一个定位。但是如果用户点击返回以后,再次点击按钮进入地图就会没有反应(如果一开始有授权的话就可以再次重新打开地图)。有什么方法可以解决呢,或者怎样可以重新获取用户授权。毕竟叫他们删了重来的话,这样的体验好像不大好。。。
方法:A:单击隐藏图章wx.openSetting(OBJECT) 重新调用小程序授权,文档现在已经有了【以下是文档内容】
wx.openSetting(OBJECT)
调起客户端小程序设置界面,返回用户设置的操作结果
Object 参数说明:
接口调用成功的回调函数,返回内容详见返回参数说明。
接口调用失败的回调函数
接口调用结束的回调函数(调用成功、失败都会执行)
success返回参数说明:
authSetting
用户授权结果,其中 key 为 scope 值,value 为 Bool 值,表示用户是否允许授权,详见
示例代码:
wx.openSetting({
success: (res) =& {
wx.getSetting(OBJECT)
获取用户的当前设置
Object 参数说明:
接口调用成功的回调函数,返回内容详见返回参数说明。
接口调用失败的回调函数
接口调用结束的回调函数(调用成功、失败都会执行)
success返回参数说明:
authSetting
用户授权结果,其中 key 为 scope 值,value 为 Bool 值,表示用户是否允许授权,详见
示例代码:
wx.getSetting({
success: (res) =& {
Map:function(){
wx.getLocation({
type: 'gcj02',
success: function(res){
// success
wx.openLocation({
latitude: res.latitude,
longitude: res.longitude,
scale: 28,
fail: function(res){
wx.openLocation({
address:"获取授权失败 打开默认定位",
//默认定位我就隐藏啦
latitude: XX.XX,
longitude: XX.XX,
scale: 28,
wx.openSetting({
//重新请求获取定位
success: (res) =& {}})
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!微信小程序 如何在用户拒绝授权后重新授权 - 简书
微信小程序 如何在用户拒绝授权后重新授权
在做小程序时授权问题是少不了的,可有时候总有人会点击拒绝授权,那我们开发拿不到需要的数据是不是很苦恼呢?我在自己正在做的小程序里使用了一种方法,现在分享出来~~
我的这个demo是个人信息+地理位置的双重授权
要么授权通过,进入首页
要么拒绝授权,停留在有授权入口的页面
需要设置一个标志值:authorizeInfo,根据此值得真假来决定是渲染首页还是渲染显示重新授权的页面。
在页面显示的时候,获取用户信息与地理位置(当然,这是我所需要的)
// userInfo
wx.getUserInfo({
success:res=&{
this.setData({userInfo : true})
fail:res=&{
this.setData({ userInfo: false })
// locationInfo
wx.getLocation({
success: res =& {
this.setData({ locationInfo: true })
fail: res =& {
this.setData({ locationInfo: false })
authorizeInfo的设置就要依靠刚刚获取的这两个值了,设置定时器不断执行authorizeInfo,直到userInfo和locationInfo两个值都为true就把定时器清除(设置定时器是因为刚开始获取userInfo和locationInfo可能会失败),当两者都为真时表示所有授权均已通过,跳转至首页。否则,将会一直停留在授权页。
//all authorize
let timer = setInterval(() =& {
this.authorizeInfo();
if (this.data.userInfo && this.data.locationInfo){
clearInterval(timer)
//authorizeInfo
authorizeInfo: function(){
if (this.data.userInfo && this.data.locationInfo) {
this.setData({ authorizeInfo: true })
//reLaunch
wx.reLaunch({
url: '/pages/index/index'
this.setData({ authorizeInfo: false })
而重新授权这个操作需要调用wx.openSetting这个接口,通过返回值判断,用户再次调用授权操作后是否全部授权,是的话跳转至首页,否则停留在授权页。
//toAuthorize
toAuthorize:function(){
//重新调起授权
wx.openSetting({
success: (res) =& {
if (res.authSetting["scope.userInfo"] && res.authSetting["scope.userLocation"]) {
this.setData({ authorizeInfo: true })
//reLaunch
wx.reLaunch({
url: '/pages/index/index'
this.setData({ authorizeInfo: false })
fail: (res) =& {
console.log("授权失败")
我的这个demo是个人信息加地理位置的双重授权
pages下的authorize文件夹是可以拿来直接用的
复制粘贴到你的pages下就可以了
源码请移步GitHub &&&&&&&
Where there is a shell, there is a way.
github:https://github.com/webxing
csdn:http://blog.csdn.net/believeXin
用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金Cover 有什么料? 从这篇文章中你能获得这些料: 知道setContentView()之后发生了什么? ... Android 获取 View 宽高的常用正确方式,避免为零 - 掘金相信有很多朋友...
用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你能获得这些料: 知道setContentView()之后发生了什么? ... Android 获取 View 宽高的常用正确方式,避免为零 - 掘金 相信有很多...
pdf下载地址:Java面试宝典 第一章内容介绍 20 第二章JavaSE基础 21 一、Java面向对象 21 1. 面向对象都有哪些特性以及你对这些特性的理解 21 2. 访问权限修饰符public、private、protected, 以及不写(默认)时的区别(201...
title: 微信公众号开发:获取openId和用户信息 tags:
微信公众号 categories: 笔记 date:
14:35:34 最近一直在做微信公众号项目的开发,会有一种感觉,就是微信相关的开发真TM的啰嗦麻烦啊。当首次接触这个微信相关...
近日,一则消息的爆出,让人们的视线再一次聚焦到“直播”这个行业上来。
北京某地一青年,疯狂地迷上了“打赏”女主播,甚至是不惜通过校园贷的途径来佯装自我的‘奢华’与‘富有’。然后在这看似光鲜的背后,只剩了下一个普通家庭的不堪;青年所在安徽老家的离异母亲每月紧靠着450...
星耀小学三年三班李子剑读书三十分妈妈陪读十分,我读书我快乐
丁俊晖,日出生于江苏省宜兴市,中国男子台球队运动员,斯诺克球手。8岁接触台球,13岁获得亚洲邀请赛季军,从此“神童”称号不胫而走。丁俊晖打球沉着稳健,善于思考,控球细腻。职业生涯共获得11次排名赛冠军(单赛季第五次在大型排名赛称雄,追平亨德利的最高纪录)、2...
结婚后的春节第一次和老婆分开过,还是在老婆怀孕的情况下,生活就这样无奈。买上北去的火车匆匆赶往车站。 马不停蹄形容这趟回家之行一点不过分。 打车去单位,忙完吃口饭,打车去办事地点快步走回家,拿行李打车去办事地点,坐车去火车站。一刻不停歇。 下火车已经深夜11点多了,打车去旅...17.5k 人阅读
标签:至少1个,最多5个
场景模拟:
用户进入微信小程序-程序调出授权
选择拒绝之后,需要用到用户授权才能正常使用的页面,就无法正常使用了。
解决方法:
在用户选择拒绝之后,弹窗提示用户 拒绝授权之后无法使用,让用户重新授权(微信小程序在第一次调起授权之后 ,要重新再调起,需要自己手动删除程序 或者是退出小程序 等待一段时间再进去才能调起授权,这种情况用户体验比较差)针对用户拒绝授权这种情况 监听 wx.getUserInfo -fail的回调使用
wx.showModal 提示用户 如图:
监听 wx.showModal confirm 调起设置管理 代码如下:
wx.openSetting({
success:function(res){
if (!res.authSetting["scope.userInfo"] || !res.authSetting["scope.userLocation"]) {
//这里是授权成功之后 填写你重新获取数据的js
that.getLogiCallback('',
function(){
callback('')
设置管理界面:
选择之后 就能重新成功获取用户的信息了
1 收藏&&|&&14
你可能感兴趣的文章
如果在重新拉去授权信息的时候又点击了拒绝呢?这样的话就之后就拉取信息就拉去不了了,一直返回拉取失败
如果在重新拉去授权信息的时候又点击了拒绝呢?这样的话就之后就拉取信息就拉去不了了,一直返回拉取失败
看你的需求。是不是一定要取用户信息。如果一直拒绝,就一直弹。如不需要,弹一次,即可。
看你的需求。是不是一定要取用户信息。如果一直拒绝,就一直弹。如不需要,弹一次,即可。
您好,设置管理界面是wx.openSetting这个API么,为什么我的设置界面是
“未使用您的任何信息”
您好,设置管理界面是wx.openSetting这个API么,为什么我的设置界面是
“未使用您的任何信息”
你可能感兴趣的文章
分享到微博?
我要该,理由是:
在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。}

我要回帖

更多关于 fail to open stream 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信