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


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下操作css的float属性的特殊写法
Aug 22 Javascript
正则表达式判断是否存在中文和全角字符和判断包含中文字符串长度
Sep 27 Javascript
JavaScript中的console.time()函数详细介绍
Dec 29 Javascript
JS+CSS实现的蓝色table选项卡效果
Oct 08 Javascript
js 动态添加元素(div、li、img等)及设置属性的方法
Jul 19 Javascript
AngularJS操作键值对象类似java的hashmap(填坑小结)
Nov 12 Javascript
Bootstrop实现多级下拉菜单功能
Nov 24 Javascript
jQuery弹出div层过2秒自动消失
Nov 29 Javascript
基于element-ui的rules中正则表达式
Sep 04 Javascript
记React connect的几种写法(小结)
Sep 18 Javascript
javascript中call,apply,callee,caller用法实例分析
Jul 24 Javascript
用vue写一个日历
Nov 02 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学习之正则表达式
2011/04/17 PHP
JavaScript与DOM组合动态创建表格实例
2012/12/23 Javascript
文本框(input)获取焦点(onfocus)时样式改变的示例代码
2014/01/10 Javascript
js操作输入框中选择内容兼容IE及其他主流浏览器
2014/04/22 Javascript
jquery图片切换实例分析
2015/04/15 Javascript
arguments对象验证函数的参数是否合法
2015/06/26 Javascript
使用Web Uploader实现多文件上传
2016/06/08 Javascript
VUEJS实战之构建基础并渲染出列表(1)
2016/06/13 Javascript
Javascript的动态增加类的实现方法
2016/10/20 Javascript
微信小程序 获取微信OpenId详解及实例代码
2016/10/31 Javascript
Vue中父组件向子组件通信的方法
2017/07/11 Javascript
Vue 2.0学习笔记之Vue中的computed属性
2017/10/16 Javascript
JS中判断字符串存在和非空的方法
2018/09/12 Javascript
Puppet的一些技巧
2018/09/17 Javascript
layui异步加载table表中某一列数据的例子
2019/09/16 Javascript
python基础教程之实现石头剪刀布游戏示例
2014/02/11 Python
在Python的Flask框架下收发电子邮件的教程
2015/04/21 Python
python使用wmi模块获取windows下硬盘信息的方法
2015/05/15 Python
Python编程中对super函数的正确理解和用法解析
2016/07/02 Python
Python实现mysql数据库更新表数据接口的功能
2017/11/19 Python
python中logging模块的一些简单用法的使用
2019/02/22 Python
Python字符串内置函数功能与用法总结
2019/04/16 Python
把JSON数据格式转换为Python的类对象方法详解(两种方法)
2019/06/04 Python
Python collections模块使用方法详解
2019/08/28 Python
Tensorflow之梯度裁剪的实现示例
2020/03/08 Python
中国领先的专业演出票务网:永乐票务
2016/08/29 全球购物
经典c++面试题五
2014/12/17 面试题
计算机专业职业规划
2014/02/28 职场文书
学习党的群众路线实践活动思想汇报
2014/09/12 职场文书
党的群众路线教育实践活动学习笔记范文
2014/11/06 职场文书
小学生交通安全寄语
2015/02/27 职场文书
2015年新教师工作总结
2015/04/28 职场文书
贷款收入证明格式
2015/06/24 职场文书
2015年国庆节广播稿
2015/08/19 职场文书
php 原生分页
2021/04/01 PHP
javascript对象3个属性特征
2021/11/17 Javascript