美文网首页
2018-04-09

2018-04-09

作者: zy99 | 来源:发表于2018-04-09 17:18 被阅读0次

    微信小程序之同步授权

    需求分析: 

    1.在小程序首次打开的时候,我需要同时请求获取多个权限,由用户逐一授权。 

    ([‘scope.userInfo’,‘scope.userLocation’,‘scope.address’,‘scope.record’,‘scope.writePhotosAlbum’]) 

    问题分析: 

    1. wx.authorize接口同时调用,请求多个权限,由于异步原因,将授权请求一并发出,显然不符合要求。 

    2. promise能很好的解决问题,试着尝试了一下,下面代码分为两个文件。

    第一步:(在此之前需要先下载es6-promise.js文件)

    //创建一个  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 }

    第二步:

    let list = ["scope.userInfo", "scope.userLocation", "scope.address", "scope.record"]

        //记录请求结果

        let num = 0;

        //改成循环方式

        scope.getScope(list[0]).then(function (res) {

          num += res;

          scope.getScope(list[1]).then(function (res) {

            num += res;

            //调起设置页面

            if (num) {

              console.log(num.length)

              wx.openSetting({

                success(res) {

                  //允许获取用户信息

                  console.log('888888')

                }

              })

            }

          })

        })

    分析求解: 

    1.代码中问题1写法过于笨,但是尝试通过循环方式调用写法,又不知道如何处理回调问题。 

    2.wx.authorize接口,success参数官方给出的解释是(接口调用成功的回调函数),其实不然,实际上是接口调用成功,并且获取到了scope指定的权限

    相关文章

      网友评论

          本文标题:2018-04-09

          本文链接:https://www.haomeiwen.com/subject/zjwihftx.html