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


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 Tips 为AJAX回调函数传递额外参数的方法
Dec 28 Javascript
jquery validate poshytip 自定义样式
Nov 26 Javascript
全面兼容的javascript时间格式化函数(比较实用)
May 14 Javascript
jQuery性能优化技巧分析
Feb 20 Javascript
jQuery插件expander实现图片翻转特效
May 21 Javascript
jQuery Form 表单提交插件之formSerialize,fieldSerialize,fieldValue,resetForm,clearForm,clearFields的应用
Jan 23 Javascript
使用Javascript监控前端相关数据的代码
Oct 27 Javascript
用React-Native+Mobx做一个迷你水果商城APP(附源码)
Dec 25 Javascript
Angular设置别名alias的方法
Nov 08 Javascript
Windows下Node爬虫神器Puppeteer安装记
Jan 09 Javascript
vue设计一个倒计时秒杀的组件详解
Apr 06 Javascript
微信小程序如何调用图片接口API并居中显示
Jun 29 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
PHP4中实现动态代理
2006/10/09 PHP
PHP调用wsdl文件类型的接口代码分享
2014/11/19 PHP
php生成数字字母的验证码图片
2015/07/14 PHP
php设计模式之单例模式代码
2016/06/11 PHP
总结一些js自定义的函数
2006/08/05 Javascript
Add a Formatted Table to a Word Document
2007/06/15 Javascript
zTree插件之单选下拉菜单实例代码
2013/11/07 Javascript
javascript(js)的小数点乘法除法问题详解
2014/03/07 Javascript
jQuery表单域属性过滤器用法分析
2015/02/10 Javascript
jQuery实现带滚动导航效果的全屏滚动相册实例
2015/06/19 Javascript
JS中BOM相关知识点总结(必看篇)
2016/11/22 Javascript
JS实现带动画的回到顶部效果
2017/12/28 Javascript
layui table表格数据的新增,修改,删除,查询,双击获取行数据方式
2019/11/14 Javascript
原生JS实现微信通讯录
2020/06/18 Javascript
viewer.js实现图片预览功能
2020/06/24 Javascript
[05:46]DOTA2英雄梦之声_第18期_陈
2014/06/20 DOTA
python获取文件扩展名的方法
2015/07/06 Python
Windows下python2.7.8安装图文教程
2016/05/26 Python
在Python中分别打印列表中的每一个元素方法
2018/11/07 Python
在python中获取div的文本内容并和想定结果进行对比详解
2019/01/02 Python
Flask教程之重定向与错误处理实例分析
2019/08/01 Python
基于python+selenium的二次封装的实现
2020/01/06 Python
使用Python打造一款间谍程序的流程分析
2020/02/21 Python
利用python如何实现猫捉老鼠小游戏
2020/12/04 Python
微软开源最强Python自动化神器Playwright(不用写一行代码)
2021/01/05 Python
python工具快速为音视频自动生成字幕(使用说明)
2021/01/27 Python
HTML5 video循环播放多个视频的方法步骤
2020/08/06 HTML / CSS
Lampenwelt德国:欧洲领先的灯具和照明在线商店
2018/08/05 全球购物
万代美国官网:PREMIUM BANDAI USA
2020/09/11 全球购物
创联软件面试题笔试题
2012/10/07 面试题
校本教研工作方案
2014/01/14 职场文书
六查六看自查报告
2014/10/14 职场文书
2014年政务公开工作总结
2014/12/09 职场文书
优秀团员自我评价
2015/03/10 职场文书
2016年企业先进员工事迹材料
2016/02/25 职场文书
深入理解CSS 中 transform matrix矩阵变换问题
2021/08/30 HTML / CSS