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


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实现拖拽 闭包函数详细介绍
Nov 25 Javascript
在表单提交前进行验证的几种方式整理
Jul 31 Javascript
javascript放大镜效果的简单实现
Dec 09 Javascript
浅谈javascript属性onresize
Apr 20 Javascript
js+html5绘制图片到canvas的方法
Jun 05 Javascript
JS折半插入排序算法实例
Dec 02 Javascript
json格式数据的添加,删除及排序方法
Jan 21 Javascript
jquery实现的简单轮播图功能【适合新手】
Aug 17 jQuery
在JS循环中使用async/await的方法
Oct 12 Javascript
vue 地图可视化 maptalks 篇实例代码详解
May 21 Javascript
构建大型 Vue.js 项目的10条建议(小结)
Nov 14 Javascript
JavaScript实现拖拽功能
Feb 11 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
PHP 生成的XML以FLASH获取为乱码终极解决
2009/08/07 PHP
php 函数中使用static的说明
2012/06/01 PHP
CI框架给视图添加动态数据
2014/12/01 PHP
php array_reverse 以相反的顺序返回数组实例代码
2017/04/11 PHP
jQuery AjaxQueue改进步骤
2011/10/06 Javascript
关于JavaScript中的关联数组分析
2013/04/09 Javascript
使用JQUERY进行后台页面布局控制DIV实现左右式
2014/01/07 Javascript
移动Web中图片自适应的两种JavaScript解决方法
2015/06/18 Javascript
浅谈window对象的scrollBy()方法
2015/07/15 Javascript
微信小程序 教程之wxapp视图容器 scroll-view
2016/10/19 Javascript
jquery html5 视频播放控制代码
2016/11/06 Javascript
深入理解angular2启动项目步骤
2017/07/15 Javascript
JS控制鼠标拒绝点击某一按钮的实例
2017/12/29 Javascript
Angular开发实践之服务端渲染
2018/03/29 Javascript
实现vuex与组件data之间的数据同步更新方式
2019/11/12 Javascript
JS端基于download.js实现图片、视频时直接下载而不是打开预览
2020/05/09 Javascript
在vue中实现给每个页面顶部设置title
2020/07/29 Javascript
Python中的条件判断语句基础学习教程
2016/02/07 Python
python使用生成器实现可迭代对象
2018/03/20 Python
Python将列表数据写入文件(txt, csv,excel)
2019/04/03 Python
java判断三位数的实例讲解
2019/06/10 Python
详解Python 调用C# dll库最简方法
2019/06/20 Python
python GUI库图形界面开发之PyQt5图片显示控件QPixmap详细使用方法与实例
2020/02/27 Python
Python离线安装各种库及pip的方法
2020/11/28 Python
python中编写函数并调用的知识点总结
2021/01/13 Python
Nike英国官网:Nike.com (UK)
2017/02/13 全球购物
世界顶级俱乐部的官方球衣和套装:Subside Sports
2018/04/22 全球购物
.NET里面什么时候需要调用垃圾回收
2015/06/01 面试题
艺术设计专业个人求职信
2013/09/21 职场文书
英文版区域经理求职信
2013/10/23 职场文书
募捐倡议书怎么写
2014/05/14 职场文书
四风自我剖析材料
2014/09/30 职场文书
2014年城市管理工作总结
2014/12/02 职场文书
工资证明范本
2015/06/12 职场文书
读《儒林外史》有感:少一些功利,多一些真诚
2020/01/19 职场文书
实现AJAX异步调用和局部刷新的基本步骤
2022/03/17 Javascript