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


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 相关文章推荐
Web跨浏览器进程通信(Web跨域)
Apr 17 Javascript
Javascript 多物体运动的实现
Dec 24 Javascript
js实现当前输入框高亮显示的方法
Aug 19 Javascript
深入浅析javascript立即执行函数
Oct 23 Javascript
微信小程序使用navigateTo数据传递的实例
Sep 26 Javascript
import与export在node.js中的使用详解
Sep 28 Javascript
js中getBoundingClientRect的作用及兼容方案详解
Feb 01 Javascript
vue引入js数字小键盘的实现代码
May 14 Javascript
JS在if中的强制类型转换方式
Jul 15 Javascript
详解webpack loader和plugin编写
Oct 12 Javascript
js 计算图片内点个数的示例代码
Apr 04 Javascript
小程序实现图片预览裁剪插件
Nov 22 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(1)
2006/10/09 PHP
php统计数组元素个数的方法
2015/07/02 PHP
Apache PHP MySql安装配置图文教程
2016/08/27 PHP
Windows Live的@live.com域名注册漏洞 利用代码
2006/12/27 Javascript
不要在cookie中使用特殊字符的原因分析
2010/07/13 Javascript
基于jquery的blockui插件显示弹出层
2011/04/14 Javascript
jquery sortable的拖动方法示例详解
2014/01/16 Javascript
在JavaScript中判断整型的N种方法示例介绍
2014/06/18 Javascript
js对象浅拷贝和深拷贝详解
2016/09/05 Javascript
Angular2表单自定义验证器的实现
2016/10/19 Javascript
AngularJS Controller作用域
2017/01/09 Javascript
三种方式实现瀑布流布局
2017/02/10 Javascript
微信小程序scroll-view实现横向滚动和上拉加载示例
2017/03/06 Javascript
深入理解Webpack 中路径的配置
2017/06/17 Javascript
详解jquery插件jquery.viewport.js学习使用方法
2017/09/08 jQuery
Javascript中的作用域及块级作用域
2017/12/08 Javascript
基于vue-simplemde实现图片拖拽、粘贴功能
2018/04/12 Javascript
在 Angular-cli 中使用 simple-mock 实现前端开发 API Mock 接口数据模拟功能的方法
2018/11/28 Javascript
详解Puppeteer前端自动化测试实践
2019/02/21 Javascript
layui自定义工具栏的方法
2019/09/19 Javascript
python对配置文件.ini进行增删改查操作的方法示例
2017/07/28 Python
使用python生成目录树
2018/03/29 Python
Anaconda 离线安装 python 包的操作方法
2018/06/11 Python
Python 函数返回值的示例代码
2019/03/11 Python
基于Python绘制个人足迹地图
2020/06/01 Python
如何用Python绘制3D柱形图
2020/09/16 Python
Python调用REST API接口的几种方式汇总
2020/10/19 Python
Pycharm 跳转回之前所在页面的操作
2021/02/05 Python
迪斯尼商品官方网站:ShopDisney
2016/08/01 全球购物
REISS英国官网:伦敦High Street最受欢迎品牌
2016/12/21 全球购物
KELLER SPORTS荷兰:在线订购最好的运动产品
2020/10/13 全球购物
2014年法制宣传日活动方案
2014/11/02 职场文书
万能检讨书开头与结尾怎么写
2015/02/17 职场文书
2015年个人审计工作总结
2015/04/07 职场文书
行政处罚事先告知书
2015/07/01 职场文书
2016大学生毕业实习心得体会
2016/01/23 职场文书