美文网首页mpvue
微信小程序授权失败再次授权

微信小程序授权失败再次授权

作者: hello_web_Front | 来源:发表于2020-11-01 23:45 被阅读0次

    微信小程序在进行用户授权的操作中,会先询问用户是否授权,这个授权的弹框只会弹出一次(如下图所示),一旦你点击拒绝授权,是不会再弹出是否授权的窗口的。


    1603965201(1).png

    如何解决呢?打开授权面板,用户自行勾选哪些授权。这样就可以正常的使用了。

    这里使用showModel进行模拟授权的弹框,也就是如果首次用户拒绝授权,那么再次点击的时候弹出一个showModel,询问是否授权,如果点击确认就打开授权面板,如果取消则算了。再次点击的时候再次显示showModel即可。


    IEW0Z)I@OGU5X}T`AO{($IF.png

    代码思路:
    首先通过wx.getSetting 获取授权获取用户的当前设置。返回值中只会出现小程序已经向用户请求过的权限,具体又哪些参数自行打印成功之后的回调函数,(我这里用到的是位置)然后通过wx.authorize这个方法来判断用户有没有授权位置权限,如果没有的话,则调用wx-showModel 弹出框诱导用户前往设置面板,如果弹出的showModel用户点击也是取消按钮 ,那么无法获取位置,当他再次点击的时候继续弹出showModel


    QQ图片20201101234331.png

    具体的代码如下:

     choosePostion() {
        var _self = this;
        wx.getSetting({
          // 获取用户的已经和用户申请过的权限
          success(res) {
            console.log(res);
            if (!res.authSetting["scope.userLocation"]) {
              // 说明这里用户是拒绝授权的
              wx.authorize({
                scope: "scope.userLocation",
                success() {
                  // 用户同意进行授权了
                  _self.getPosition();
                },
                // 用户点击的是拒绝授权 这个时候当你再次点击打开地图的按钮 是不会打开弹框的 更不回会打开地图的。
                fail: async () => {
                  // 对微信的showModel进一步封装
                  const flag = await showModel("位置");
                  if (flag) {
                    wx.openSetting({
                      success() {
                        _self.getPosition();
                      },
                    });
                  }
                },
              });
            } else {
              _self.getPosition();
            }
          },
        });
      },
    

    相关文章

      网友评论

        本文标题:微信小程序授权失败再次授权

        本文链接:https://www.haomeiwen.com/subject/lqhpvktx.html