如题所示,如果在请求某权限时,用户在弹出的提示框中选择了拒绝,那么下次我们再调wx.authorize()去获取权限时,是不会有提示框弹出来的,直接返回一个错误给你,在它的fail回调中可以捕捉到如下错误信息:
errMsg: "authorize:fail 系统错误,错误码:-12006,auth deny"
wx.authorize()官方文档的描述是这样的:
提前向用户发起授权请求。调用后会立刻弹窗询问用户是否同意授权小程序使用某项功能或获取用户的某些数据,但不会实际调用对应接口。如果用户之前已经同意授权,则不会出现弹窗,直接返回成功。
这个文档说的得不全,他只说了之前已同意的情况。这无疑会让人理解为:如果之前没有授权或之前已拒绝授权的时候,均会弹出提示窗口。而实际情况如我们上面看到的,已拒绝授权的不会有弹窗。
微信的文档很垃圾,这是共识,多骂无益,继续往下看!
如果我们要使用某个权限,比如wx.getUserInfo,如果我们直接调用它,它会怎么运行呢?首先他会判断授权情况(scope.userInfo),如果值为true,则无弹窗,返回成功。如果值为false,则无弹窗,返回失败。如果值为undefined,则弹出提示窗口,请用户选择同意授权或拒绝。你看看,这个过程和直接调用wx.authorize()是不是完全一样的?所以说,你还去调wx.authorize()有何意义呢?
解决方案是什么呢?还是回归到getSetting和openSetting吧!
好了,关于第一次拒绝授权后wx.authorize不会弹出提示窗口,本文就介绍这么多,希望对大家有所帮助!