小程序用户拒绝授权解决方法

众所周知,小程序进入首先都要进行微信授权的,那万一用户不小心点了拒绝按钮怎么办呢?不要慌,官方早已预料到此情况,并提供了api供开发者使用,下面就一起来研究下api吧

一、API接口

wx.openSetting(OBJECT)

调起客户端小程序设置界面,返回用户设置的操作结果。

注:设置界面只会出现小程序已经向用户请求过的权限。

wx.getSetting(OBJECT)

获取用户的当前设置。

注:返回值中只会出现小程序已经向用户请求过的权限。

二、API调用顺序

首先要知道咱们解决的问题是什么,其次才是怎么解决问题。

需要解决的问题:用户拒绝授权,在需要其授权的信息的页面打开授权,让用户再次进行授权(ps:表达能力有限)

分析问题:1.拒绝授权;2.再次授权

1:既然已拒绝授权,那么肯定已经调用了wx.getUserInfo()方法,那么先看下这个api吧

        wx.getUserInfo({
            success: function (res) {//用户同意授权时返回的数据
                var userInfo = res.userInfo
                wx.setStroageSync('userInfo', userInfo)//获app.userInfo = userInfo
                var nickName = userInfo.nickName
                var avatarUrl = userInfo.avatarUrl
                var gender = userInfo.gender //性别 0:未知、1:男、2:女
                var province = userInfo.province
                var city = userInfo.city
                var country = userInfo.country
            },
            fail: function (ret) {//用户拒绝授权时的操作
                // 

            }
        })

2.再次授权

        // 在需要用户授权时调用wx.getSetting()
        wx.getSetting({
            success: function (res) {
                if (res.authSetting["scope.userInfo"]) {//用户已授权
                    wx.getUserInfo({
                        success: function (data) {
                            var scopeData = data.userInfo;
                            wx.setStorageSync('userInfo', scopeData);
                        }
                    })
                } else {//用户未授权
                    // 可以添加个提示信息,在这里就我就不写了哈
                    wx.openSetting({//打开小程序设置页面,用户自己选择授权
                        success: function (res) {
                            res.authSetting = {
                                "scope.userInfo": true
                            }
                        }
                    })
                }
            }
        })
       

3.注

 最后一点要注意,在小程序的设置页面,用户点击按钮是没有办法进行其操作的,要在其返回页面的onShow方法里进行wx.getSetting的success()操作

posted @ 2018-02-08 14:54  凉生丿墨染  阅读(1117)  评论(0编辑  收藏  举报