小程序必备逻辑------授权

简介

授权,在小程序项目中也是必不可少的,因为涉及隐私,所以部分接口是需要得到用户的授权才能调用,那么接下来,我就把授权这块展开和大家做个分享~

授权

文章开头已经介绍过,部分接口需要得到用户的授权方可调用,那么小程序把这些接口按使用范围分成多个 scope ,用户选择对 scope 来进行授权,当授权给一个scope 之后,其对应的所有接口都可以直接使用。

scope的列表如下图所示:
在这里插入图片描述
接下来,咱们就以userInfo作为切入点进行讲解,因为userInfo相对其他比较特殊,那么在讲之前,大家还需要了解下以下逻辑:

  • 如果用户未接受或拒绝过此权限,会弹窗询问用户,用户点击同意后方可调用接口;
  • 如果用户已授权,可以直接调用接口;
  • 如果用户已拒绝授权,则不会出现弹窗,而是直接进入接口 fail 回调。

OK,开干~

首先判断用户是否有权限,如果没有,咱们就需要让用户授权,那么怎么让用户授权,有两种方式,如下所示:

  • 调用APIwx.authorize({scope: "scope.userInfo"}),向用户发起请求;
  • 使用<button open-type="getUserInfo" bindgetuserinfo="getUserInfo" type="primary">一键登录</button>

那么这两种方式有什么区别呢,区别在于,使用wx.authorize({scope: "scope.userInfo"})是不会弹框的,所以如果要授权获取用户信息,需要使用第二种。弹框样式如下所示(这张图片是真机的图片,真机和开发者工具是不一样的,一切以真机为主):

注意哦,使用wx.authorize,只是获取用户信息授权不会弹框,并不是所有授权都不会弹框,具体的大家可以去查阅官方文档。

如果用户允许了,调用对应接口即可,比照scope列表图调用对应接口即可。如address调用wx.chooseAddress

如果用户在第一次拒绝了,那么下一次的时候,就不会弹框了,则会触发wx.authorizefail回调函数,返回值是errMsg: "authorize:fail 系统错误,错误码:-12006,auth deny",这个时候大家就需要去处理拒绝授权的情况,推荐是让用户手动打开,新建一个页面,利用<button open-type="openSetting" bindopensetting="getSetting" type="primary">设置</button>,引导用户点击去选择,弹框如下图所示:

截止位置,授权的逻辑就讲完了,代码如下所示:

正常授权逻辑

// --------------------------------- wxml
<button class="login-btn" type="primary" bindtap="getAddrees">获取地址</button>
// --------------------------------- js
  getAddrees() {
    // 判断是否授权
    wx.getSetting({
      success(res) {
        // 如果没有授权
        if (!res.authSetting['scope.address']) {
          // 发起授权
          wx.authorize({
            scope: 'scope.address',
            success () {
              wx.chooseAddress({
                // 选择完地址的回调
                success(res) {
                  console.log(res)
                },
                fail(res) {
                  console.log("获取用户地址失败", res)
                }
               })
            },
            fail(err) {
              // 用户第一次拒绝后,第二次会进入此回调,针对处理即可
            }
          })
        }  else {
          // 已经授权的逻辑
          wx.chooseAddress({
            // 选择完地址的回调
            success(res) {
              console.log(res)
            },
            fail(res) {
              console.log("获取用户地址失败", res)
            }
           })
        }
      }
    })
  }

需要用按钮触发的授权,这里用获取用户信息来演示

// --------------------------------- wxml
<button open-type="getUserInfo" bindgetuserinfo="getUserInfo" type="primary">获取用户信息</button>
// --------------------------------- js
  getUserInfo(user) {
    const userInfo = user.detail.userInfo
    // 存在用户信息则是被授权了
    if (userInfo) {
      console.log(userInfo)
    } else {
      console.log('未授权')
    }
  }

OK,以上就是授权的所有逻辑了,希望能给大家带来帮助,如有问题,还请大家多多指教,thank you~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
weixin008微信平台的旅游出行必备商城小程序是一个基于微信平台的旅游出行服务应用,采用了SSM(Spring、SpringMVC、MyBatis)框架进行开发。以下是对该小程序的技术介绍和功能概述: 技术介绍: 前端技术:使用微信小程序框架进行开发,通过WXML(类似于HTML)和WXSS(类似于CSS)进行页面布局和样式设计,同时使用JavaScript进行逻辑处理和数据交互。 后端技术:采用SSM框架进行后端开发,其中Spring负责依赖注入和事务管理,SpringMVC负责请求分发和响应处理,MyBatis负责数据库操作和映射。 数据库技术:使用MySQL数据库存储用户信息、旅游产品信息等数据,通过MyBatis进行数据操作和查询。 服务器技术:使用Tomcat作为Web服务器,部署后端应用程序,提供API接口供前端调用。 网络通信:使用HTTP协议进行前后端数据交互,通过AJAX进行异步请求和响应。 功能概述: 用户注册与登录:用户可以通过微信授权登录,也可以进行手机号注册和登录,实现用户身份的验证和管理。 旅游产品浏览:用户可以浏览各类旅游产品,包括景点门票、酒店预订、旅游线路等,查看产品详情和价格信息。 在线预订:用户可以选择心仪的旅游产品进行在线预订,填写相关信息并支付费用,完成预订流程。 订单管理:用户可以查看自己的订单列表,包括已支付、待支付、已取消等状态,可以对订单进行修改和取消操作。 个人中心:用户可以查看个人信息,包括头像、昵称、联系方式等,可以修改个人资料和密码。 客服咨询:用户可以通过在线客服功能与客服人员进行实时沟通,咨询旅游相关问题和解决订单问题。 评价反馈:用户可以对已购买的旅游产品进行评价和反馈,分享自己的旅游体验和意见。 总结: weixin008微信平台的旅游出行必备商城小程序是一个基于微信平台的旅游服务应用,采用了SSM框架进行后端开发,实现了用户注册登录、旅游产品浏览、在线预订、订单管理等功能,为用户提供便捷的旅游出行服务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值