小程序用户授权处理

1. 获取微信收货地址(处理用户允许授权、拒绝授权的所有情况)

getAddress: function () {
      var t = this;
      wx.getSetting({
        success(res) {
          console.log("vres.authSetting[‘scope.address‘]:", res.authSetting[‘scope.address‘])
          var openid = wx.getStorageSync("openid");
          console.log(openid);
          //根据用户当前设置中的用户授权结果,判断是否包含收货地址授权
          //用户已授权使用收货地址
          if (res.authSetting[‘scope.address‘]) {
            console.log("111")
            //选择收货地址
            wx.chooseAddress({
              success(res) {
                app.util.request({
                  url: "entry/wxapp/Member_address",
                  header: {
                    "content-type": "application/x-www-form-urlencoded"
                  },
                  data: {
                    username: res.userName,
                    postalcode: res.postalCode,
                    provincename: res.provinceName,
                    cityname: res.cityName,
                    countyname: res.countyName,
                    detailinfo: res.detailInfo,
                    telnumber: res.telNumber,
                    openid: openid
                  },
                  success: function (res) {
                    console.log(‘成功2‘, res);
                    t.setData({
                      noAddress: false
                    })
                    wx.setStorage({
                      key: ‘noAddress‘,
                      data: t.data.noAddress,
                    })
                  }
                });
              }
            })
            // 用户未同意小程序使用通讯地址时
          } else {
            console.log(‘222‘);
            //取消过收货地址授权,调用wx.openSetting(),调起客户端小程序设置界面让用户去打开授权
            if (res.authSetting[‘scope.address‘] == false) {
              wx.openSetting({
                success(res) {
                  console.log(‘333‘);
                  console.log(res.authSetting)
                }
              })
            } else {
              //用户当前设置不包含收货地址授权(说明是第一次打开获取用户收货地址信息的授权),调用wx.chooseAddress(),获取用户收货地址
              console.log(‘444‘);
              wx.chooseAddress({
                success(res) {
                  app.util.request({
                    url: "entry/wxapp/Member_address",
                    header: {
                      "content-type": "application/x-www-form-urlencoded"
                    },
                    data: {
                      username: res.userName,
                      postalcode: res.postalCode,
                      provincename: res.provinceName,
                      cityname: res.cityName,
                      countyname: res.countyName,
                      detailinfo: res.detailInfo,
                      telnumber: res.telNumber,
                      openid: openid
                    },
                    success: (res)=> {
                      console.log(‘成功1‘,res);
                      t.setData({
                        noAddress: false
                      })
                      wx.setStorage({
                        key: ‘noAddress‘,
                        data: t.data.noAddress,
                      })
                    }
                  });
                }
              })
            }
          }
        }
      })
    }

2. 获取摄像头授权(处理用户允许、拒绝的情况)

实现效果:

(1)首次进入时,调起授权询问框

(2)若用户拒绝,显示警告框

(3)若用户授权,调起客户端小程序设置界面

wxml代码

<camera wx:if="{{camera}}" device-position="back" flash="off" binderror="error" class=‘camera_box‘></camera>

js代码

//用户拒绝授权摄像头
  error: function(){
    wx.showModal({
      title: ‘警告‘,
      content: ‘若不授权使用摄像头,将无法使用拍照识别功能!‘,
      cancelText: ‘不授权‘,
      cancelColor: ‘#1ba9ba‘,
      confirmText: ‘授权‘,
      confirmColor: ‘#1ba9ba‘,
      success(res) {
        //允许打开授权页面
        if (res.confirm) {
          //调起客户端小程序设置界面,返回用户设置的操作结果
          wx.openSetting({
            success(res) {
              res.authSetting = {
                "scope.camera": true
              }
            },
            fail(err) {
              console.log(‘err‘, err);
            }
          })
        } else if (res.cancel) {//拒绝打开授权页面
          wx.redirectTo({
            url: ‘../selcat/selcat‘,
          })
        }
      }
    })
  }

补充:项目中,重新调起摄像头授权不能与获取收货地址使用相同逻辑,主要是因为wx.openSetting API必须通过点击才能调用


详情,可搜索小程序“垃圾该去哪”

原文地址:https://www.cnblogs.com/duanzhenzhen/p/11404077.html

时间: 2024-10-19 03:41:29

小程序用户授权处理的相关文章

小程序用户授权可以获取用户的信息

wxml页面 <button open-type="getUserInfo" bindgetuserinfo="bindGetUserInfo></button> js页面 bindGetUserInfo:function(e){ console.log(e) wx.login({ success:res=>{ // ------ 获取凭证 ------ var code = res.code; console.log(code); // con

小程序 用户授权登录

1.index.wxml中 <button open-type="getUserInfo" bindgetuserinfo="getUserInfo"> 获取头像昵称 </button> 2.index.js中 getUserInfo: function(e) { console.log(e) app.globalData.userInfo = e.detail.userInfo this.setData({ userInfo: e.deta

微信小程序用户拒绝授权的官方推荐处理方法

小程序开发中,现在一般都需要获取微信用户信息,如头像/名字等.这样在用户第一次进入小程序时,微信端会弹出一个是否同意授权的消息提示框.但是如果用户第一时间点击了拒绝,或者用户手误点击了拒绝,如果没有了后续的操作,可能你的小程序就不能使用了,也就会失去这样一位用户.所以,微信官方推荐了一个方法,就是在用户第一次拒绝授权的时候,再给用户一个选择的机会.这样能很好的解决上诉问题.下面以用户需要授权两个权限为例,方法如下: 在 APP.JS 先设置两个全局变量 .用作记录用户是否授权 //判断地理位置是

小程序开发另类小技巧 --用户授权篇

本文主要帮助大家解决部分功能接口二次授权+统一管理(包含对于wx对象的扩展)问题,例如获取地理位置信息,收获地址,录音等授权问题 小程序开发另类小技巧 --用户授权篇 getUserInfo较为特殊,不包含在本文范围内,主要针对需要授权的功能性api,例如:wx.startRecord,wx.saveImageToPhotosAlbum, wx.getLocation 原文地址:https://www.yuque.com/jinxuanzheng/gvhmm5/arexcn 仓库地址:https

5行代码获取小程序用户的手机号

最近有很多同学有获取小程序用户手机号的需求.其实云开发出现之前我们获取小程序用户的手机号特别繁琐.自从有了云开发,我们获取用户手机号变得非常简单.只需要5行代码即可. 老规矩,我们先来看下效果图 再来看下核心的代码,其实只有下面这一些.甚至可以说核心代码只有上图红色框里的两行.是的,你没听错,只靠这2行代码,就可以轻松的获取用户小程序绑定的手机号.下面我们就来具体讲解吧. 注意:只有企业小程序才可以获取用户手机号,个人小程序没有办法获取的. 一,首先要用到button组件的开发能力 编写wxml

使用CryptoJS解决微信小程序用户信息解密

使用CryptoJS解决微信小程序用户信息解密 问题描述: wx.getUserInfo(OBJECT)微信官方的这个获取用户信息的方法,需要对接口返回的加密数据( encryptedData )进行对称解密. 微信官方有提供加密数据解密算法 接口如果涉及敏感数据(如wx.getUserInfo当中的 openId 和unionId ),接口的明文内容将不包含这些敏感数据.开发者如需要获取敏感数据,需要对接口返回的加密数据( encryptedData )进行对称解密. 解密算法如下: 对称解密

微信小程序用户评分实例

微信小程序用户评分实例!成都小程序开发实例为大家分享了微信小程序实现展示评分结果的具体代码,供大家参考,具体内容如下 根据评分展示整颗行星或者半颗星星 根据评分按照小数点展示整颗行星或者部分星星 wxml 本文实例为大家分享了微信小程序实现展示评分结果的具体代码,供大家参考,具体内容如下 根据评分展示整颗行星或者半颗星星 根据评分按照小数点展示整颗行星或者部分星星 wxml <view class="conmmentbox"> <view class="st

【微信小程序】用户首次进入小程序拒绝授权,如何再次调用授权页面,获取用户信息userInfo

前言:微信小程序的app.js里面,最少有2个接口,一个wx.login:一个是wx.getUserInfo: 前者得到腾讯给我们的微信用户唯一的code,通过code获取openid,这个不需要用户授权,我们肯定能得到: 但是,后者是需要用户授权,我们才能通过腾讯得到用户的其他信息,比如nickname.avatarUrl.encryptedData.iv等,如果你只需要openid,下面的代码你可以不用看了,下面重点讲解如何 多次调用wx.getUserInfo或者app.getUserIn

关于微信小程序拒绝授权后,重新授权并获取用户信息

最近公司做了一些有关微信小程序的项目,涉及到授权获取用户基本信息,但是在拒绝授权之后就不会再出现授权窗口: 看网上也有很多人遇到了同样的问题,所以记录下来我的处理方法,供大家和自己学习和记录: 当调用小程序 wx.getUserInfo(OBJECT) 获取用户基本信息时,需要用户进行授权操作,如果用户点击了拒绝,则再次调用该方法就不会出现对应的授权窗口,很是让人困惑: 找了许久,最后让我发现了它:------> wx.openSetting(OBJECT),下面让我们认识一下: wx.open