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


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 相关文章推荐
表单切换,用回车键替换Tab健(不支持IE)
Jul 20 Javascript
javascript动画对象支持加速、减速、缓入、缓出的实现代码
Sep 30 Javascript
js 判断js函数、变量是否存在的简单示例代码
Mar 04 Javascript
一个支持任意尺寸的图片上下左右滑动效果
Aug 24 Javascript
jQuery实现的鼠标滑过弹出放大图片特效
Jan 08 Javascript
Ext JS动态加载JavaScript创建窗体的方法
Jun 23 Javascript
jQuery实现验证码功能
Mar 17 Javascript
jQuery的时间datetime控件在AngularJs中的使用实例(分享)
Aug 17 jQuery
Angular 封装并发布组件的方法示例
Apr 19 Javascript
vue+elementUi图片上传组件使用详解
Aug 20 Javascript
Vue解析带html标签的字符串为dom的实例
Nov 13 Javascript
vue实现的封装全局filter并统一管理操作示例
Feb 02 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实现多站点共用session实现单点登录的方法详解
2019/09/18 PHP
jQuery初学:find()方法及children方法的区别分析
2011/01/31 Javascript
Jquery刷新页面背景图片随机变换的实现方法
2013/03/15 Javascript
js获取光标位置和设置文本框光标位置示例代码
2014/01/09 Javascript
在myeclipse中如何加入jquery代码提示功能
2014/06/03 Javascript
JavaScript中的console.log()函数详细介绍
2014/12/29 Javascript
IE6-IE9使用JSON、table.innerHTML所引发的问题
2015/12/22 Javascript
探析浏览器执行JavaScript脚本加载与代码执行顺序
2016/01/12 Javascript
ES6中如何使用Set和WeakSet
2016/03/10 Javascript
JavaScript中cookie工具函数封装的示例代码
2016/10/11 Javascript
手机端js和html5刮刮卡效果
2020/09/29 Javascript
vue-cli如何引入bootstrap工具的方法
2017/10/19 Javascript
vue解决跨域路由冲突问题思路解析
2017/11/03 Javascript
vue bus全局事件中心简单Demo详解
2018/02/26 Javascript
在vue项目中引入highcharts图表的方法
2019/01/21 Javascript
JS制作简易计算器的实例代码
2020/07/04 Javascript
JavaScript实现多层颜色选项卡嵌套
2020/09/21 Javascript
[02:37]2015国际邀请赛选手档案—LGD.Xiao8
2015/07/28 DOTA
详解Django框架中用context来解析模板的方法
2015/07/20 Python
python生成lmdb格式的文件实例
2018/11/08 Python
Python检查ping终端的方法
2019/01/26 Python
Python将json文件写入ES数据库的方法
2019/04/10 Python
python实现趣味图片字符化
2019/04/30 Python
解决Python中pandas读取*.csv文件出现编码问题
2019/07/12 Python
python中rb含义理解
2020/06/18 Python
html5的画布canvas——画出弧线、旋转的图形实例代码+效果图
2013/06/09 HTML / CSS
测试驱动开发的主要步骤是什么
2014/12/10 面试题
英语专业应届生求职信范文
2013/11/15 职场文书
拾金不昧的表扬信
2014/01/16 职场文书
元旦晚会邀请函
2014/01/27 职场文书
优秀团员事迹材料1000字
2014/08/20 职场文书
2014应届本科生自我评价
2014/09/13 职场文书
个人委托书范本汇总
2014/10/01 职场文书
初中团支书竞选稿
2015/11/21 职场文书
用python实现监控视频人数统计
2021/05/21 Python
keepalived + nginx 实现高可用方案
2022/12/24 Servers