开发中遇到授权相关的一些疑问,麻烦官方解答一下?
发布于 6 年前 作者 juan51 7106 次浏览 来自 官方Issues

感觉授权这一块的文档比较混乱。

1、wx.authorize() 需要先调用吗,按照https://developers.weixin.qq.com/community/develop/doc/0002e457c348c02526e7610d056001这篇文章的说法,还有文档中提到的“scope.userLocationBackground 不会弹窗提醒用户”,我的理解是:scope.userInfoscope.userLocationBackground 这两个scope是不能调用或不需要调用wx.authorize()来授权的,前者改为使用open-data的方式,而后者“不会弹窗提醒用户”,也就是需要是用openSetting()引导用户去设置,除这两个scope比较特殊外,wx.authorize()都可以用来授权其他scope,并且会有弹窗提醒?

2、openSetting()是否只能自己实现点击事件调用,或使用showModal()来触发?

3、“地理位置用途说明”的配置,具体再什么情况下会弹出,在哪个步骤?

4、开发过程中曾遇到过,小程序设置界面出现“未使用你任何信息”,无任何设置项,并且我能在不授权的情况下直接调用wx.startLocationUpdateBackground(),调用后设置中就出现位置的设置项,如何理解?根据文档所描述“设置界面只会出现小程序已经向用户请求过的权限”,什么叫做已经向用户请求过的权限,是否代表wx.authorize() 请求过的scope就回出现在设置中,那么对于scope.userLocationBackground 这种不是通过wx.authorize() 授权的scope,怎么才会出现在设置中呢?openSetting引导到设置界面后岂不是什么都没有?

5、按照我对以上问题的理解,以授权scope.userLocationBackground 为例,我下面的代码是否正确?还是那个疑问,我是先getSeeting()完再授权的,那么根据“设置界面只会出现小程序已经向用户请求过的权限”这句话,那么首次调用的时候设置界面怎么会出现这个scope对应的设置呢?这个scope好像并不需要向用户请求,而是引导用户去设置,是否这句话并不适用于这个scope呢?

wx.getSetting({
  success (res) {
	  if(!res.authSetting['scope.userLocationBackground']){
		  wx.showModal({
			title:"授权提示",
			content:"请设置位置信息为‘使用小程序期间和离开小程序’",
			confirmText:"打开设置",
			showCancel:false,
			success(){
				wx.openSetting({
				  success (openSetRes) {// 离开设置界面后触发
					if(!openSetRes.authSetting['scope.userLocationBackground']){
					     // 没有按提示要求设置成功,做相应处理
					}else{
					     // 用户按提示设置完成了(也就是授权成功)
                                             wx.startLocationUpdateBackground();
    					}
    				  },
    				  fail(res){}
    				})
    			 }
    		  })
    	  }
      }
回到顶部