微信小程序授权处理

微信小程序授权处理

1.授权

部分接口需要经过用户授权同意才能调用。我们把这些接口按使用范围分成多个 scope ,用户选择对 scope 来进行授权,当授权给一个 scope 之后,其对应的所有接口都可以直接使用。

2.获取用户授权设置

开发者可以使用 wx.getSetting 获取用户当前的授权状态。

3.打开设置界面

用户可以在小程序设置界面(「右上角」 - 「关于」 - 「右上角」 - 「设置」)中控制对该小程序的授权状态。

开发者可以调用 wx.openSetting 打开设置界面,引导用户开启授权。

注意:该授权状态为小程序的授权状态,不是微信系统的授权状态

4.提前发起授权请求

开发者可以使用 wx.authorize 在调用需授权 API 之前,提前向用户发起授权请求。

scope 参数列表可参照:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/authorize.html#scope-%E5%88%97%E8%A1%A8

在app.vue中全局引入

/* 判断小程序是否授权 
                options = {
                    scope: 'record', //授权类型
                    content: '请前往设置页打开麦克风', //内容
                }
            */
            getSettingRecord(options = {
                scope: 'record',
                content: '请前往设置页打开麦克风'
            }) {
                var self = this;
                var scopeStr = '';
                if (options.scope.indexOf('scope.') != -1) {
                    scopeStr = options.scope;
                } else {
                    scopeStr = 'scope.' + options.scope;
                }
                // #ifdef MP
                return new Promise((resolve, reject) => {
                    uni.getSetting({
                        success: (res) => {
                            self.globalData.settingInfo = res.authSetting;
                            let auth = res.authSetting[scopeStr]
                            console.warn('scope.record=', auth, typeof auth)
                            if (auth === true) { // 用户已经同意授权
                                resolve(true)
                            } else if (auth === undefined) { // 首次发起授权
                                uni.authorize({
                                    scope: scopeStr,
                                    success() {
                                        resolve(true)
                                    },
                                    fail(res) {}
                                })
                            } else if (auth === false) { // 非首次发起授权,用户拒绝过 => 弹出提示对话框
                                uni.showModal({
                                    title: '授权提示',
                                    content: options.content,
                                    success: (tipRes) => {
                                        if (tipRes.confirm) {
                                            wx.openSetting({
                                                success: (settingRes) => {
                                                    if (settingRes.authSetting[
                                                            scopeStr]) {
                                                        resolve(true)
                                                    }
                                                    console.warn('settingRes',
                                                        settingRes)
                                                },
                                            })
                                        }
                                    }
                                })
                            }
                        },
                    })
                })
                // #endif
            },

使用

var opt = {
  scope: 'camera',
  content: '收集你选中的照片或视频信息,用于方便在群聊时发送图片或者视频。'
}
app.getSettingRecord(opt).then((data) => {
  uni.chooseVideo({
    sourceType: ['album', 'camera'], // 来源相册或者拍摄
    maxDuration: 60, // 设置最长时间60s
    camera: 'back', // 后置摄像头
    success(res) {
      console.log(res)
    }
  })
})

在 2023年9月15日之后,微信小程序需要添加用户隐私保护授权,才能使用微信接口。如果已用户隐私保护授权且微信接口授权后还是调用失败。别慌!只需去微信小程序后台更新一下用户隐私保护指引就可以了

添加用户隐私授权弹窗:https://www.cnblogs.com/czhowe/p/17848655.html

效果:

     

注意:当系统中微信的没有授权时,即时小程序授权也无法生效

   

 

posted @ 2022-04-02 10:53  时光独醒  阅读(114)  评论(0)    收藏  举报