uniapp小程序登录、数据请求方式

<template>
    <view>
        <h2>index页面</h2>
        <!-- 当用户初始时或者由于失误拒绝授权时,需要点击事件手动授权 -->
        <button @click="getHandle">手动授权按钮</button>
        <!-- 获取的用户头像 -->
        <image :src="imgInfo"></image>
    </view>
</template>

<script>
    export default {
        data() {
            return {
                imgInfo:"",//头像
                nickName:""//昵称    
            }
        },
        onLoad() {
            // 初始时获取用户设置
            this.accessPermission();
        },
        methods: {
            // 执行获取用户设置的函数
            accessPermission() {
                // 赋值this指向
                var _this=this;
                // 获取授权信息
                uni.getSetting({
                    success(res) {
                        // 判断scope后对应的scope.userInfo是否授权
                        if (res.authSetting['scope.userInfo']) {
                            // 如果已经授权,则获取用户信息
                            uni.getUserInfo({
                                success(res){
                                    // 获取信息后执行登录
                                    _this.handleLogin(res);
                                },
                                fail(err){
                                    console.log("获取用户信息失败")
                                }
                            })
                        } else if (!res.authSetting['scope.userInfo']) {
                            // 如果没有授权则进行提前授权--进入页面时弹出
                            // 不配置此项初次进入页面不会弹出申请权限窗口
                            uni.authorize({
                                // 配置授权选项--用户账号信息
                                scope:'scope.userInfo',
                                success(res){
                                    // 授权成功后可以直接获取用户相关信息
                                    console.log("授权成功")
                                },
                                fail(err){
                                    // 提前授权失败时,等待用户手动点击授权
                                    console.log("授权失败")
                                }
                            })
                        };
                    }
                })
            },
            // 点击按钮激发授权事件
            getHandle() {
                // 重赋值this
                var _this=this;
                // 获取用户授权设置
                uni.getSetting({
                    success(res){
                        if(res.authSetting['scope.userInfo']){
                            // 如果要获取的权限已经授权,则直接获取相关信息
                            uni.getUserInfo({
                                success(res){
                                    // 获取相关数据后,进行登录及数据请求
                                    _this.handleLogin(res);
                                },
                                fail(err){
                                    // 错误信息
                                    console.log(err)
                                }
                            })
                        }else if(!res.authSetting['scope.userInfo']){
                            // 如果要获取的权限尚未授权,则此时触发授权,打开设置页面
                            uni.showModal({
                                //弹出提示框
                                title: '是否打开设置页?',
                                content: '需要在设置中获取xx信息和xx权限',
                                success(res) {
                                    if (res.confirm) {
                                        uni.openSetting({
                                            // 弹出框,确认后打开设置页面
                                            success(res) {
                                                console.log(res.authSetting)
                                            },    
                                        })
                                    } else if (res.cancel) {
                                        console.log('用户点击取消');
                                    }
                                }
                            });    
                        }
                    }
                })    
            },
            // 执行登录,数据请求的方法
            handleLogin(infoRes){
                this.imgInfo=infoRes.userInfo.avatarUrl;//头像信息
                this.nickName=infoRes.userInfo.nickName;//昵称
                let encryptedData=infoRes.encryptedData;//用户信息的加密数据串
                let iv=infoRes.iv;//加密算法秘钥
                // 进行用户登录
                uni.login({
                    success(res){
                        if(res.code){
                            // 登录成功后且code存在,则进行数据请求
                            uni.request({
                                //请求路径
                                url:"http://m.maoyan.com/ajax/movieOnInfoList",
                                // 携带参数
                                data:{
                                    code:res.code,//请求时携带参数
                                },
                                method:"GET",
                                success(res){
                                    console.log(res);
                                },
                                fail(err){
                                    console.log("数据请求失败")
                                }
                            })
                        }else{
                            // 无code时不执行数据请求
                            console.log("无code")
                        }    
                    },
                    fail(err){
                        console.log("登陆失败")
                    }
                })
            }
        },
    }
</script>

<style>

</style>

猜你喜欢

转载自www.cnblogs.com/Alex-Song/p/12165457.html