微信小程序 同步请求授权
来源:互联网 发布:java的书会过时吗 编辑:程序博客网 时间:2024/05/17 02:00
需求分析:
1.在小程序首次打开的时候,我需要同时请求获取多个权限,由用户逐一授权。
([‘scope.userInfo’,‘scope.userLocation’,‘scope.address’,‘scope.record’,‘scope.writePhotosAlbum’])
问题分析:
1. wx.authorize接口同时调用,请求多个权限,由于异步原因,将授权请求一并发出,显然不符合要求。
2. promise能很好的解决问题,试着尝试了一下,下面代码分为两个文件。
// scope.jsimport 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.jsimport 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指定的权限
阅读全文
0 0
- 微信小程序 同步请求授权
- 微信小程序拒绝授权再次调起授权
- 请求用户授权定位
- 请求授权(Authorize Requests)
- 微信小程序如何再次获取用户授权
- 微信小程序授权获取用户详细信息openid
- 微信小程序获取手机号授权登录
- 微信小程序网络请求
- 微信小程序 POST请求
- 微信小程序:发送请求
- 微信小程序ajax请求
- 网络请求 同步请求
- 微信小程序request请求实例,网络请求。
- 微信小程序request请求实例,网络请求。
- 微信小程序网络请求wx.request请求
- 微信小程序之网络请求(POST请求)
- shiro授权入门程序
- 站点授权程序截图
- bingo-培训——用户体验
- 盘点8种CSS实现垂直居中水平居中的绝对定位居中技术
- ubunut python2 和python 3 同时存在 pip指向问题
- 理发师
- oracel 中关于时间日期的取值和转化
- 微信小程序 同步请求授权
- SpringData JPA中数据库表的映射类需要一个不在表中的字段
- 学习笔记第一篇,不喜勿喷
- a、b交换
- 欢迎使用CSDN-markdown编辑器
- Android Device Monitor 文件管理的常见问题
- 石乙己——孔乙己程序员版
- java中停止线程执行的方法
- 查找字符个数--查找一个字符串中第一个只出现两次的字符。比如:“abcdefabcdefabc”中第一个只出现两次为‘d’,要求时间复杂度为O(N),空间复杂度为O(1)