zoukankan      html  css  js  c++  java
  • 小程序原生js获取用户权限

    1.首先要有一个按钮

    <view name="authorizemodal">
        <view class="drawer_screen" wx:if="{{isauthorizeModal}}">
            <view class="drawer_box fishqccenter phonechoosebox">
                <view>
                    <image style="90%;" src="https://try.fishqc.com/img/Try-sm/authorization.png" mode="widthFix"></image>
                </view>
                <view>
                    <button class="authorization-btn" open-type="getUserInfo" bindgetuserinfo="getlogincode" style="border-radius: 1rpx"></button>
                </view>
                <!-- <view class="weChatAuth">授权提示</view>
                <view class="phonechoosetxt">放心试小程序需授权获取微信权限信息</view>
                <view class="phonechoosebtncontain">
                   <view class="getPhoneContain">
                        <button class="author-btn"  open-type="getUserInfo" bindgetuserinfo="getlogincode" style="border-radius: 1rpx">授权</button>
                   </view>
                </view> -->
            </view>
        </view>
    </view>
    

    2.授权的js代码

    var app = getApp()
    Component({
        properties: {
            
        },
        data: {
            isauthorizeModal:false
        },
        methods: {
            toasttips: function (text, icon, time) {
                wx.showToast({
                    title: text == null ? '' : text,
                    icon: icon,
                    duration: time == null ? '1000' : time
                })
            },
            getlogincode: function () {
                var that = this;
                wx.login({
                    success: function (res) {
                        if (res.code) {
                            var logincode = res.code
                            
    
                            // 弹窗授权
                            wx.getUserInfo({
                                success: function (res) {
                                    if (res.errMsg == 'getUserInfo:ok') {
                                        var encryptedData = res.encryptedData
                                        var iv = res.iv;
                                        that.setData({
                                            isauthorizeModal: false
                                        })
                                        that.triggerEvent('myevent',{arg:false})
                                        that.WeixinLogin(logincode, encryptedData, iv);
                                    }
                                    
                                },
                                fail: function (res) {
                                    // console.log('点击确认取消')
                                    that.checkauthorize();
                                }
                            })
                        } else {
                            // console.log('登录失败!' + res.errMsg)
                           
                        }
                    }
                });
                
                
    
            },
            // 检查是否授权过
            checkauthorize: function () {
                var that = this;
                wx.getSetting({
                    success(res) {
                        // 没有授权过的,进入如下
                        if (!res.authSetting['scope.userInfo']) {
                            that.authorizemodal();
                        }else{
                            that.setData({
                                isauthorizeModal:false
                            })
                            that.triggerEvent('myevent',{arg:false})
                        }
                    }
                })
            },
            // 授权失败,弹窗
            authorizemodal: function () {
                var that = this;
                wx.showModal({
                    title: '获取用户信息授权',
                    content: '当前功能需授权获取用户信息',
                    confirmText: '继续授权',
                    confirmColor: '#64c8bc',
                    success: function (res) {
                        if (res.confirm) {
                            // console.log("点击去设置")
                            that.authorize();
                        } else if (res.cancel) {
                            // console.log("点击取消")
                            // console.log(res)
                        }
    
    
    
                    }
                })
            },
            authorize: function () {
                var that = this;
                wx.openSetting({
                    success: function (res) {
                        // console.log("授权不成功")
                        if (!res.authSetting['scope.userInfo']) {
                            that.setData({
                                isauthorizeModal:true
                            })
                            that.triggerEvent('myevent',{arg:true})
    
                        }else{
                            // console.log("授权成功")
                            wx.login({
                                success: function (res) {
                                    if (res.code) {
                                        var logincode = res.code
                                        // 弹窗授权
                                        wx.getUserInfo({
                                            success: function (res) {
                                                // console.log('点击确认授权')
                                                if (res.errMsg == 'getUserInfo:ok') {
                                                    var encryptedData = res.encryptedData
                                                    var iv = res.iv;
                                                    that.setData({
                                                        isauthorizeModal: false
                                                    })
                                                    that.triggerEvent('myevent',{arg:false})
                                                    that.WeixinLogin(logincode, encryptedData, iv);
                                                }
                                                
                                            },
                                            fail: function (res) {
                                            }
                                        })
                                    } else {
                                        // console.log('登录失败!' + res.errMsg)
                                       
                                    }
                                }
                            });
                            
                        }
                        
                    },
                    fail: function () {
                        that.checkauthorize();
                    }
                })
            },
            show:function(){
                var that = this;
                wx.getSetting({
                    success(res) {
                        // console.log(res)
                        // 没有授权过的,进入如下
                        if (!res.authSetting['scope.userInfo']) {
                            
                            var modalarg  = wx.getStorageSync('modalarg')
                            console.log(modalarg)
                            if(modalarg == ''){   //没缓存,调接口
                                wx.request({
                                    url: 'https://try.fishqc.com/getAb', //请求接口地址
                                    data: {},
                                    method:'GET',
                                    header: {
                                        'content-type': 'application/x-www-form-urlencoded', // 默认值
                                        'skey': wx.getStorageSync('getstoreskey')
                                    },
                                    success: function(res) {
                                        if(res.data.code == 200){ 
    
                                            if(res.data.data.abstatus == 1){ //abstatus为1时,授权弹窗开启
                                               
                                                wx.setStorageSync('modalarg',res.data.data)  //设置已经调用过该接口的标识缓存
                                                if(res.data.data.abvalue  == 'a'){  //abvalue为a时,授权弹窗
                                                    wx.getSetting({
                                                        success(res) {
                                                            
                                                            // 没有授权过的,进入如下
                                                            if (!res.authSetting['scope.userInfo']) {
                                                                that.setData({
                                                                    isauthorizeModal:true
                                                                })
                                                                that.triggerEvent('myevent',{arg:true})
                                                            }
                                                        }
                                                    })
                                                    
                                                }
                                            }
    
                                        }
                                        
                                    }
                                })
    
                            }else{  //有缓存,直接判断
                                if(modalarg.abstatus == 1){ //abstatus为1时,授权弹窗开启
                                    if(modalarg.abvalue  == 'a'){   //abvalue为a时,授权弹窗
                                        console.log('有缓存')
                                        wx.getSetting({
                                            success(res) {
                                                
                                                // 没有授权过的,进入如下
                                                if (!res.authSetting['scope.userInfo']) {
                                                    that.setData({
                                                        isauthorizeModal:true
                                                    })
                                                    that.triggerEvent('myevent',{arg:true})
                                                }
                                            }
                                        })
                                    }
                                }
                            }
                        }else{
                            
                            that.setData({
                                isauthorizeModal:false
                            })
                            that.triggerEvent('myevent',{arg:false})
                        }
                    }
                })
                
                
            },
            WeixinLogin: function (logincode, encryptedData, iv) {
                var that = this;
                var arg = wx.getStorageSync('modalarg')?wx.getStorageSync('modalarg'):''
                var channel = wx.getStorageSync('channel')?wx.getStorageSync('channel'):''
                console.log('channel test')
                console.log(channel)
                wx.request({
                    url: 'https://product.fishqc.com/Api/WeixinLogin/weiXinMini',
                    data: {
                        code: logincode,
                        iv: iv,
                        encryptedData: encryptedData,
                        device_id:arg.deviceId,
                        abtest:'1',
                        is_login:0,
                        channel:channel
    
                    },
                    method: 'POST',
                    header: {
                        'content-type': 'application/x-www-form-urlencoded' // 默认值
                    },
                    success: function (res) {
                        
                    }
                })
            }
        }
    })
    
  • 相关阅读:
    SparkSQL UDF使用方法与原理详解
    Hadoop 之日志管理—应用在 YARN 中运行时的日志
    圣诞节雪花效果,pc端
    转 redis使用场景 简介
    转 springboot 教程
    springboot freeMarker
    springboot web 服务器选择
    springboot 异步任务
    springboot 整合 rabbitmq
    软件开发生命周期过程中,必须考虑的安全问题
  • 原文地址:https://www.cnblogs.com/antyhouse/p/9857871.html
Copyright © 2011-2022 走看看