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


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 相关文章推荐
JavaScript 拾碎[三] 使用className属性
Oct 16 Javascript
JavaScript 函数参数是传值(byVal)还是传址(byRef) 分享
Jul 02 Javascript
jQuery处理xml格式的返回数据(实例解析)
Nov 28 Javascript
深入理解Javascript作用域与变量提升
Dec 09 Javascript
jquery如何获取复选框的值
Dec 12 Javascript
jQuery学习笔记之总体架构
Jun 03 Javascript
javascript中cookie对象用法实例分析
Jan 30 Javascript
基于jQuery通过jQuery.form.js插件实现异步上传
Dec 13 Javascript
浅谈AngularJs 双向绑定原理(数据绑定机制)
Dec 07 Javascript
Vue移动端实现图片上传及超过1M压缩上传
Dec 23 Javascript
JavaScript运动原理基础知识详解
Apr 02 Javascript
Vue 中如何将函数作为 props 传递给组件的实现代码
May 12 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实例分享之通过递归实现删除目录下的所有文件详解
2014/05/15 PHP
Zend Guard使用指南及问题处理
2015/01/07 PHP
php的debug相关函数用法示例
2016/07/11 PHP
PHP利用Socket获取网站的SSL证书与公钥
2017/06/18 PHP
详解php中serialize()和unserialize()函数
2017/07/08 PHP
InnerHtml和InnerText的区别分析
2009/03/13 Javascript
JS图片浏览组件PhotoLook的公开属性方法介绍和进阶实例代码
2010/11/09 Javascript
JavaScript prototype 使用介绍
2013/08/29 Javascript
JS实现浏览器状态栏文字从右向左弹出效果代码
2015/10/27 Javascript
JS基于构造函数实现的菜单滑动显隐效果【测试可用】
2016/06/21 Javascript
Jq通过td获取同行其它列td的方法
2016/10/05 Javascript
vue中使用localstorage来存储页面信息
2017/11/04 Javascript
angularjs性能优化的方法
2018/09/05 Javascript
一步步教你利用Docker设置Node.js
2018/11/20 Javascript
微信小程序局部刷新触发整页刷新效果的实现代码
2018/11/21 Javascript
js变量声明var使用与不使用的区别详解
2019/01/21 Javascript
JavaScript禁止右击保存图片,禁止拖拽图片的实现代码
2020/04/28 Javascript
如何在vue中使用video.js播放m3u8格式的视频
2021/02/01 Vue.js
python实现在每个独立进程中运行一个函数的方法
2015/04/23 Python
Python通过正则表达式选取callback的方法
2015/07/18 Python
浅谈Python 的枚举 Enum
2017/06/12 Python
Python中的探索性数据分析(功能式)
2017/12/22 Python
Python GUI编程 文本弹窗的实例
2019/06/11 Python
Python2和3字符编码的区别知识点整理
2019/08/08 Python
tensorboard 可以显示graph,却不能显示scalar的解决方式
2020/02/15 Python
pytorch简介
2020/11/11 Python
python3处理word文档实例分析
2020/12/01 Python
Python 找出英文单词列表(list)中最长单词链
2020/12/14 Python
世界上第一个创建了罩杯系统的美国内衣品牌:Maidenform
2019/03/23 全球购物
迪卡侬印尼体育用品商店:Decathlon印尼
2020/03/11 全球购物
美国在线艺术商店:HandmadePiece
2020/11/06 全球购物
加拿大服装和鞋类零售商:Mark’s
2021/01/04 全球购物
焊接专业毕业生求职信
2013/10/01 职场文书
党员思想汇报范文
2013/12/30 职场文书
工作态度怎么写
2015/06/25 职场文书
mysql中如何用命令创建联合唯一索引
2022/04/20 MySQL