uniapp中小程序的授权操作

时间:2024-04-16 22:22:36

使用uniapp开发小程序时,大致获取授权及权限的操作如下:

这里以获取位置信息为例,需要注意的是获取位置信息时,需要在manifest.json文件中进行相应配置

manifest.json:

"permission": {
            "scope.userLocation": {
                "desc": "提示文字"
            }
        }

vue文件内部写法:

<template>
    <view>
        <button @click="handleLocation">手动授权</button>
    </view>
</template>

<script>
    export default {
        data() {
            return {}
        },
        onLoad() {
            // 初始化页面,执行查看已授权信息
            this.getSettingMess();
        },
        methods: {
            // 执行函数
            getSettingMess() {
                // 获取已授权类别
                uni.getSetting({
                    success(res) {
                        if (res.authSetting[\'scope.userLocation\']) {
                            console.log("userLocation位置功能已授权")
                            // 如果已授权,直接获取对应参数
                            uni.getLocation({
                                success(res) {
                                    console.log(res)
                                }
                            })
                        } else if (!res.authSetting[\'scope.userLocation\']) {
                            // 说明此时要获取的位置功能尚未授权,
                            // 则设置进入页面时主动弹出,直接授权
                            uni.authorize({
                                scope: \'scope.userLocation\',
                                success(res) {
                                    // 授权成功
                                    console.log(res)
                                    // 成功后获取对应的位置参数
                                    uni.getLocation({
                                        success(res) {
                                            console.log(res)
                                        }
                                    })
                                },
                                fail() {
                                    console.log("位置授权失败")
                                }
                            })
                        }
                    },
                    fail() {
                        console.log("获取授权信息授权失败")
                    }
                })
            },
            // 如果初始进入页面时点击了拒绝授权,如需要该权限,需要手动授权
            // 手动授权的触发方法
            handleLocation() {
                uni.getSetting({
                    success(res) {
                        if (res.authSetting[\'scope.userLocation\']) {
                            // 再次判断所需权限是否已授权,如已授权则直接使用
                            uni.getLocation({
                                success(res) {
                                    console.log(res)
                                }
                            })
                        } else if (!res.authSetting[\'scope.userLocation\']) {
                            // 如未授权则重新打开设置页面,进行授权
                            uni.showModal({
                                //弹出提示框
                                title: \'是否打开设置页?\',
                                content: \'需要在设置中获取xx信息和xx权限\',
                                success(res) {
                                    if (res.confirm) {
                                        // 用户点击确定按钮
                                        uni.openSetting({
                                            // 确认后打开设置页面
                                            success(res) {
                                                if(res.authSetting[\'scope.userLocation\']){
                                                    console.log("手动授权成功")
                                                }else{
                                                    console.log("手动授权失败")
                                                }
                                            },
                                            fail(){
                                                console.log("打开设置页面失败")
                                            }
                                        })
                                    } else if (res.cancel) {
                                        // 用户点击取消按钮
                                        console.log(\'用户点击取消\');
                                    }
                                },
                                fail(){
                                    console.log("确认取消弹出未弹出")
                                }
                            });
                        }
                    },
                    fail(){
                        console.log("获取已授权信息失败")
                    }
                })
            }
        }
    }
</script>

附截图: