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


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 相关文章推荐
JavaScript flash复制库类 Zero Clipboard
Jan 17 Javascript
jQuery+css+html实现页面遮罩弹出框
Mar 21 Javascript
Extjs407 getValue()和getRawValue()区别介绍
May 21 Javascript
Node.js 的异步 IO 性能探讨
Oct 08 Javascript
学习JavaScript设计模式(继承)
Nov 26 Javascript
Angular2 环境配置详细介绍
Sep 21 Javascript
详解AngularJS2 Http服务
Jun 26 Javascript
Angular ng-animate和ng-cookies用法详解
Apr 18 Javascript
VUE单页面切换动画代码(全网最好的切换效果)
Oct 31 Javascript
基于jQuery实现可编辑的表格
Dec 11 jQuery
Vue通过配置WebSocket并实现群聊功能
Dec 31 Javascript
使用vue实现HTML页面生成图片的方法
Mar 12 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 高级课程笔记 面向对象
2009/06/21 PHP
PHP入门学习笔记之一
2010/10/12 PHP
PHP采集类Snoopy抓取图片实例
2014/06/19 PHP
PHP表单提交后引号前自动加反斜杠的原因及三种办法关闭php魔术引号
2015/09/30 PHP
Laravel手动返回错误码示例
2019/10/22 PHP
PHP 实现 JSON 数据的编码和解码操作详解
2020/04/22 PHP
js 动态文字滚动的例子
2011/01/17 Javascript
js跑马灯代码(自写)
2013/04/17 Javascript
js超时调用setTimeout和间歇调用setInterval实例分析
2015/01/28 Javascript
Javascript控制input输入时间格式的方法
2015/01/28 Javascript
jQuery多个input求和的实现方法
2015/02/12 Javascript
AngularJS 作用域详解及示例代码
2016/08/17 Javascript
node.js Sequelize实现单实例字段或批量自增、自减
2016/12/08 Javascript
Extjs让combobox写起来简洁又漂亮
2017/01/05 Javascript
vue2.0全局组件之pdf详解
2017/06/26 Javascript
Angular.js中$resource高大上的数据交互详解
2017/07/30 Javascript
layer.open 按钮的点击事件关闭方法
2018/08/17 Javascript
详解如何在vscode里面调试js和node.js的方法步骤
2018/12/24 Javascript
jQuery实现的隔行变色功能【案例】
2019/02/18 jQuery
详解JavaScript之Array.reduce源码解读
2020/11/01 Javascript
Python抓取Discuz!用户名脚本代码
2013/12/30 Python
python实现的正则表达式功能入门教程【经典】
2017/06/05 Python
python实现各种插值法(数值分析)
2019/07/30 Python
jupyter使用自动补全和切换默认浏览器的方法
2020/11/18 Python
解决pytorch 的state_dict()拷贝问题
2021/03/03 Python
北美领先的智能产品购物网站:Wellbots
2018/06/11 全球购物
美国最受欢迎的度假目的地优惠套餐:BookVIP
2018/09/27 全球购物
澳大利亚领先的在线药房:Pharmacy Online(有中文站)
2020/02/22 全球购物
机械专业求职信
2014/05/25 职场文书
党员民主生活会对照检查材料思想汇报
2014/09/28 职场文书
养成教育工作总结
2015/08/13 职场文书
老干部局2015年度工作总结
2015/10/22 职场文书
解决numpy数组互换两行及赋值的问题
2021/04/17 Python
vue实现无缝轮播效果(跑马灯)
2021/05/14 Vue.js
Redis缓存-序列化对象存储乱码问题的解决
2021/06/21 Redis
springboot应用服务启动事件的监听实现
2022/04/06 Java/Android