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


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 相关文章推荐
Jquery Ajax学习实例 向页面发出请求,返回XML格式数据
Mar 14 Javascript
jquery Mobile入门—多页面切换示例学习
Jan 08 Javascript
javascript的alert box在java中如何显示多行
May 18 Javascript
微信小程序本地缓存数据增删改查实例详解
May 24 Javascript
BootStrap入门学习第一篇
Aug 28 Javascript
Vue实现简单分页器
Dec 29 Javascript
小程序封装wx.request请求并创建接口管理文件的实现
Apr 29 Javascript
简单了解JavaScript异步
May 23 Javascript
Vue+Node服务器查询Mongo数据库及页面数据传递操作实例分析
Dec 20 Javascript
js实现简单的贪吃蛇游戏
Apr 23 Javascript
Vue路由的模块自动化与统一加载实现
Jun 05 Javascript
vue-cli4使用全局less文件中的变量配置操作
Oct 21 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获取服务器信息的实现代码
2013/02/04 PHP
探讨php中遍历二维数组的几种方法详解
2013/06/08 PHP
php实现的获取网站备案信息查询代码(360)
2013/09/23 PHP
什么是PHP文件?如何打开PHP文件?
2017/06/27 PHP
PHP getID3类的使用方法学习笔记【附getID3源码下载】
2019/10/18 PHP
表单的焦点顺序tabindex和对应enter键提交
2013/01/04 Javascript
javascript基本包装类型介绍
2015/04/10 Javascript
jquery分割字符串的方法
2015/06/24 Javascript
浅谈JavaScript字符串拼接
2015/06/25 Javascript
Jquery+Ajax+PHP+MySQL实现分类列表管理(上)
2015/10/28 Javascript
批量下载对路网图片并生成html的实现方法
2016/06/07 Javascript
js动态添加的DIV中的onclick事件简单实例
2016/07/25 Javascript
Vue.js 插件开发详解
2017/03/29 Javascript
JS实现导出Excel的五种方法详解【附源码下载】
2018/03/15 Javascript
ES6中let、const的区别及变量的解构赋值操作方法实例分析
2019/10/15 Javascript
ant-design-vue按需加载的坑的解决
2020/05/14 Javascript
vue 手机物理监听键+退出提示代码
2020/09/09 Javascript
[04:52]DOTA2亚洲邀请赛附加赛 TOP10精彩集锦
2015/01/29 DOTA
python实现的简单文本类游戏实例
2015/04/28 Python
在PyTorch中Tensor的查找和筛选例子
2019/08/18 Python
python实现画循环圆
2019/11/23 Python
tensorflow2.0保存和恢复模型3种方法
2020/02/03 Python
jenkins+python自动化测试持续集成教程
2020/05/12 Python
Python astype(np.float)函数使用方法解析
2020/06/08 Python
python要安装在哪个盘
2020/06/15 Python
解决python便携版无法直接运行py文件的问题
2020/09/01 Python
python对批量WAV音频进行等长分割的方法实现
2020/09/25 Python
3D动画《斗罗大陆》上线当日播放过亿
2021/03/16 国漫
天巡全球:Skyscanner Global
2017/06/20 全球购物
社区道德讲堂实施方案
2014/03/21 职场文书
新员工试用期自我鉴定
2014/04/17 职场文书
县政府办公室领导班子对照检查材料思想汇报
2014/09/28 职场文书
婚宴新郎致辞
2015/07/28 职场文书
个人工作总结(管理人员)范文
2019/08/13 职场文书
如何使用CocosCreator对象池
2021/04/14 Javascript
Vue深入理解插槽slot的使用
2022/08/05 Vue.js