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


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中输入验证中一个不错的效果
Aug 21 Javascript
Knockoutjs快速入门(经典)
Dec 24 Javascript
js的压缩及jquery压缩探讨(提高页面加载性能/保护劳动成果)
Jan 29 Javascript
instanceof和typeof运算符的区别详解
Jan 06 Javascript
js对象继承之原型链继承实例
Jan 10 Javascript
js将table的每个td的内容自动赋值给其title属性的方法
Oct 13 Javascript
javascript实现文字无缝滚动
Dec 27 Javascript
微信小程序 Nginx环境配置详细介绍
Feb 14 Javascript
完美解决spring websocket自动断开连接再创建引发的问题
Mar 02 Javascript
BootStrap Table 后台数据绑定、特殊列处理、排序功能
May 27 Javascript
详解vue-cli脚手架build目录中的dev-server.js配置文件
Nov 24 Javascript
element-ui 上传图片后清空图片显示的实例
Sep 04 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程序时遇到的三个问题
2012/01/17 PHP
PHP通过session id 实现session共享和登录验证的代码
2012/06/03 PHP
简单的pgsql pdo php操作类实现代码
2016/08/25 PHP
PHP实现深度优先搜索算法(DFS,Depth First Search)详解
2017/09/16 PHP
扩展Jquery插件处理mouseover时内部有子元素时发生样式闪烁
2011/12/08 Javascript
jquery 快速回到页首的方法
2013/12/05 Javascript
bootstrap data与jquery .data
2014/07/07 Javascript
基于jQuery实现表单提交验证
2014/11/24 Javascript
JavaScript前端开发之实现二进制读写操作
2015/11/04 Javascript
JavaScript实现自动生成网页元素功能(按钮、文本等)
2015/11/21 Javascript
websocket+node.js实现实时聊天系统问题咨询
2017/05/17 Javascript
浅谈JavaScript中的属性:如何遍历属性
2017/09/14 Javascript
vue中实现图片和文件上传的示例代码
2018/03/16 Javascript
浅析JS中回调函数及用法
2018/07/25 Javascript
vue本地打开build后生成的dist文件夹index.html问题
2019/09/04 Javascript
转换layUI的数据表格中的日期格式方法
2019/09/19 Javascript
vue props 单项数据流实例分享
2020/02/16 Javascript
vue 调用 RESTful风格接口操作
2020/08/11 Javascript
vue中使用echarts的示例
2021/01/03 Vue.js
Vue中避免滥用this去读取data中数据
2021/03/02 Vue.js
Python 执行字符串表达式函数(eval exec execfile)
2014/08/11 Python
关于PyCharm安装后修改路径名称使其可重新打开的问题
2020/10/20 Python
美国最大的骑马用品零售商:HorseLoverZ
2017/01/12 全球购物
探索欧洲最好的品牌:Bombinate
2019/06/14 全球购物
德国前卫设计师时装在线商店:Luxury Loft
2019/11/04 全球购物
JSF的标签库有哪些
2012/04/27 面试题
一套Delphi的笔试题一
2016/02/14 面试题
后勤工作职责
2013/12/22 职场文书
竞争与合作演讲稿
2014/05/12 职场文书
应届大专生自荐书
2014/06/16 职场文书
乡镇群众路线教育实践活动整改措施
2014/10/04 职场文书
2014年房产经纪人工作总结
2014/12/08 职场文书
党性分析材料格式
2014/12/19 职场文书
优秀团队申报材料
2014/12/26 职场文书
公司员工体检通知
2015/04/21 职场文书
高中美术教学反思
2016/02/17 职场文书