微信小程序 同步请求授权的详解


Posted in Javascript onAugust 04, 2017

微信小程序 同步请求授权的详解

需求分析:

1.在小程序首次打开的时候,我需要同时请求获取多个权限,由用户逐一授权。

([‘scope.userInfo',‘scope.userLocation',‘scope.address',‘scope.record',‘scope.writePhotosAlbum'])

问题分析:

1. wx.authorize接口同时调用,请求多个权限,由于异步原因,将授权请求一并发出,显然不符合要求。

2. promise能很好的解决问题,试着尝试了一下,下面代码分为两个文件。

// scope.js
import es6 from '../helpers/es6-promise'

// 获取用户授权
function getScope(scopeName) {
 return new es6.Promise(function (resolve, reject) {
  // 查询授权
  wx.getSetting({
   success(res) {
    if (!res.authSetting[scopeName]) {
     // 发起授权
     wx.authorize({
      scope: scopeName,
      success() {
       resolve(0)
      }, fail() {
       resolve(1)
      }
     })
    }
   }
  })
 })
}

module.exports = { getScope: getScope }
// index.js
import scope from "../../service/scope"
Page({
onShow() {
  let list = ["scope.userInfo", "scope.userLocation", "scope.address", "scope.record"];
  // 记录请求结果
  let num = 0;
  // 问题1:怎么改成循环方式?
  scope.getScope(list[0]).then(function (res) {
   num += res;
   scope.getScope(list[1]).then(function (res) {
    num += res;
    scope.getScope(list[2]).then(function (res) {
     num += res;
     scope.getScope(list[3]).then(function (res) {
      num += res;
      // 调起设置界面
      if (num) {
       wx.openSetting({
        success(res) {
         // 允许获取用户信息
         if (res.authSetting["scope.userInfo"])
          userService.login()
        }
       })
      } else {
       userService.login()
      }
     })
    })
   })
  })
})

分析求解:

1.代码中问题1写法过于笨,但是尝试通过循环方式调用写法,又不知道如何处理回调问题。

2.wx.authorize接口,success参数官方给出的解释是(接口调用成功的回调函数),其实不然,实际上是接口调用成功,并且获取到了scope指定的权限

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Javascript 相关文章推荐
JS 自动完成 AutoComplete(Ajax 查询)
Jul 07 Javascript
jQuery 树形结构的选择器
Feb 15 Javascript
Javascript 类与静态类的实现(续)
Apr 02 Javascript
浅谈JavaScript编程语言的编码规范
Oct 21 Javascript
js+html+css实现鼠标移动div实例
Jan 30 Javascript
Mac/Windows下如何安装Node.js
Nov 22 Javascript
raphael.js绘制中国地图 地图绘制方法
Feb 12 Javascript
深入分析JSONP跨域的原理
Dec 10 Javascript
JSON字符串和对象相互转换实例分析
Jun 16 Javascript
Angular2利用组件与指令实现图片轮播组件
Mar 27 Javascript
vue指令只能输入正数并且只能输入一个小数点的方法
Jun 08 Javascript
JavaScript获取页面元素的常用方法详解
Sep 28 Javascript
微信小程序 转发功能的实现
Aug 04 #Javascript
Vue计算属性的使用
Aug 04 #Javascript
JS+Ajax实现百度智能搜索框
Aug 04 #Javascript
vue插件vue-resource的使用笔记(小结)
Aug 04 #Javascript
分享Bootstrap简单表格、表单、登录页面
Aug 04 #Javascript
vue-cli项目如何使用vue-resource获取本地的json数据(模拟服务端返回数据)
Aug 04 #Javascript
使用jQuery实现鼠标点击左右按钮滑动切换
Aug 04 #jQuery
You might like
Laravel框架执行原生SQL语句及使用paginate分页的方法
2018/08/17 PHP
Thinkphp页面跳转设置跳转等待时间的操作
2019/10/16 PHP
javascript 火狐(firefox)不显示本地图片问题解决
2008/07/05 Javascript
基于jquery1.4.2的仿flash超炫焦点图播放效果
2010/04/20 Javascript
JavaScript 程序编码规范
2010/11/23 Javascript
js 判断checkbox是否选中的操作方法
2012/11/09 Javascript
JS之Date对象和获取系统当前时间详解
2014/01/13 Javascript
Javascript MVC框架Backbone.js详解
2014/09/18 Javascript
VUE JS 使用组件实现双向绑定的示例代码
2017/01/10 Javascript
jQuery监听浏览器窗口大小的变化实例
2017/02/07 Javascript
vue-router单页面路由
2017/06/17 Javascript
AngularJS学习笔记之表单验证功能实例详解
2017/07/06 Javascript
微信小程序中吸底按钮适配iPhone X方案
2017/11/29 Javascript
如何去除vue项目中的#及其ie9兼容性
2018/01/11 Javascript
你点的 ES6一些小技巧,请查收
2018/04/25 Javascript
原来JS还可以这样拆箱转换详解
2019/02/01 Javascript
原生js实现商品筛选功能
2019/10/28 Javascript
selenium+java中用js来完成日期的修改
2019/10/31 Javascript
Vue实现星级评价效果实例详解
2019/12/30 Javascript
js与jquery获取input输入框中的值实例讲解
2020/02/27 jQuery
vue tab滚动到一定高度,固定在顶部,点击tab切换不同的内容操作
2020/07/22 Javascript
vue接口请求加密实例
2020/08/11 Javascript
jQuery实现放大镜案例
2020/10/19 jQuery
JavaScript实现弹出窗口效果
2020/12/09 Javascript
举例简单讲解Python中的数据存储模块shelve的用法
2016/03/03 Python
django 常用orm操作详解
2017/09/13 Python
Python延时操作实现方法示例
2018/08/14 Python
解决python3捕获cx_oracle抛出的异常错误问题
2018/10/18 Python
Python-openCV读RGB通道图实例
2020/01/17 Python
一文带你掌握Pyecharts地理数据可视化的方法
2021/02/06 Python
HTML5 语义化结构化规范化
2008/10/17 HTML / CSS
html5 Canvas绘制线条 closePath()实例代码
2012/05/10 HTML / CSS
Nike爱尔兰官方网站:Nike.com (IE)
2018/03/12 全球购物
优秀广告词大全
2014/03/19 职场文书
推荐信模板
2014/05/09 职场文书
村级干部党员公开承诺事项
2015/05/04 职场文书