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


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下扩展插件和拓展函数的写法(匿名函数使用的典型例子)
Oct 20 Javascript
基于mootools插件实现遮罩层新手引导
May 24 Javascript
Window.Open打开窗体和if嵌套代码
Apr 15 Javascript
跨域资源共享 CORS 详解
Apr 26 Javascript
老生常谈JavaScript 正则表达式语法
Aug 20 Javascript
Javascript中this绑定的3种方法与比较
Oct 13 Javascript
微信小程序实战之登录页面制作(5)
Mar 30 Javascript
Node.JS中快速扫描端口并发现局域网内的Web服务器地址(80)
Sep 18 Javascript
vue写h5页面的方法总结
Feb 12 Javascript
使用vue制作滑动标签
Sep 21 Javascript
Weex开发之地图篇的具体使用
Oct 16 Javascript
vue中keep-alive、activated的探讨和使用详解
Jul 26 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
神族 PROTOSS 概述
2020/03/14 星际争霸
把textarea中字符串里含有的回车换行替换成<br>的javascript代码
2007/04/20 Javascript
jquery实现的代替传统checkbox样式插件
2015/06/19 Javascript
JAVA四种基本排序方法实例总结
2015/07/24 Javascript
jQuery实现div随意拖动的实例代码(通用代码)
2016/01/28 Javascript
JavaScript中三种异步上传文件方式
2016/03/06 Javascript
微信小程序 require机制详解及实例代码
2016/12/14 Javascript
将鼠标焦点定位到文本框最后(代码分享)
2017/01/11 Javascript
Vue.js实现网格列表布局转换方法
2017/08/25 Javascript
一篇文章弄懂javascript中的执行栈与执行上下文
2019/08/09 Javascript
js利用拖放实现添加删除
2020/08/27 Javascript
Node在Controller层进行数据校验的过程详解
2020/08/28 Javascript
在 Django/Flask 开发服务器上使用 HTTPS
2014/07/03 Python
使用PDB简单调试Python程序简明指南
2015/04/25 Python
pow在python中的含义及用法
2019/07/11 Python
pandas条件组合筛选和按范围筛选的示例代码
2019/08/26 Python
python实现猜拳游戏
2020/03/04 Python
Django 解决新建表删除后无法重新创建等问题
2020/05/21 Python
Python中有几个关键字
2020/06/04 Python
Alba Moda瑞士网上商店:独家意大利时尚女装销售
2016/11/28 全球购物
世界上最好的旅行夹克:BauBax
2018/12/23 全球购物
获取邓白氏信用报告:Dun & Bradstreet
2019/01/22 全球购物
美国最大和最受信任的二手轮胎商店:Bestusedtires.com
2020/06/02 全球购物
广州御银科技股份有限公司试卷(C++)
2016/11/04 面试题
土木工程建筑专业毕业生求职信
2013/10/21 职场文书
入党申请人的自我鉴定
2013/12/01 职场文书
英语课前三分钟演讲稿
2014/08/19 职场文书
乡镇干部个人对照检查材料(群众路线)
2014/09/26 职场文书
律师授权委托书范本
2014/10/07 职场文书
巾帼标兵事迹材料
2014/12/26 职场文书
SQL Server 数据库实验课第五周——常用查询条件
2021/04/05 SQL Server
Python实现位图分割的效果
2021/11/20 Python
深入浅出的讲解:信号调制到底是如何实现的
2022/02/18 无线电
VUE中的v-if与v-show区别介绍
2022/03/13 Vue.js
使用vuex-persistedstate本地存储vuex
2022/04/29 Vue.js
winserver2019安装软件一直卡在应用程序正在为首次使用做准备
2022/06/10 Servers