收藏
回答

用户未授权处理解决方案

框架类型 问题类型 API/组件名称 终端类型 操作系统 微信版本 基础库版本
小程序 需求 button组件授权登录 微信iOS客户端 6.6.7 2.0.4


改版之后的wx.getUserInfo 和 wx.authorize在使用scope.userInfo时,无法再提供授权弹框,对此需要在原来代码的基础上进行修改,在onLaunch中对于授权进行判断,授权的话直接使用wx.getUserInfo,未授权会跳到带button的登录页,关键在于登录成功过如果能够返回原先的网页,跳页面之前使用的是navigateTo,但是会产生用户点击后退的问题,但是如果使用redirectTo,则不能返回原先的网页,有没有大神有更好的解决方案啊,万分感谢

代码:

app.js

// 进行授权判断

wx.getSetting({

success: res => {

if (res.authSetting['scope.userInfo']) {

// 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框

    wx.getUserInfo();

} else {

//没有授权,去登录页面 提示用户进行登录

wx.navigateTo({

url: '/pages/login/login',

})

}

console.log("授权判断结束")

}

})

login 页面:

login:function (e) {

if(e.detail.userInfo){

let sessionId = wx.getStorageSync("sessionId");

console.log("where login by user sessionid = "+sessionId);

var data = {

retStatus: 200,

encryptedData: e.detail.encryptedData,

userInfo: e.detail.userInfo,

iv: e.detail.iv

}

//获取用户信息

setTimeout(function () {

wx.navigateBack({

delta:1

})

}, 1500);

}else{

console.log("refuse authorize")

}

},


回答关注问题邀请回答
收藏

8 个回答

  • 另一蜘猪
    另一蜘猪
    2018-06-21

    做成一个弹层的组件,方便使用

    2018-06-21
    有用 1
    回复
  • 冬雪飘零bin
    冬雪飘零bin
    2018-06-19

    wx.redirectTo({

        url:'/pages/login/login?redirect_uri=当前页面路径'

    });


    登录页面授权成功后,获取redirect_uri参数,再次使用wx.redirectTo重定向当前页面


    如果我的回答对您有帮助,请点赞

    2018-06-19
    有用 1
    回复 2
    • 艾狗蛋
      艾狗蛋
      2018-06-19

      不同的页面都有带着参数,这该如何处理比较好呀

      2018-06-19
      回复
    • 刘弘愿
      刘弘愿
      2018-06-22回复艾狗蛋

      uri里面带上跳转前页面路径和参数,转码后作为字符串变量,登录页截取到这个字符串变量,在转码回来,登录后直接跳转。

      2018-06-22
      回复
  • 发米粒
    发米粒
    2018-06-22

    做一个弹框,里面放个按钮来获取用户信息

    2018-06-22
    有用
    回复
  • lothar
    lothar
    2018-06-21

    在app里面设置全局变量,存储要返回的页面path(也可以带上后面的参数),在完成业务逻辑之后,判断这个变量是否为空,不为空 直接跳过去,同时将这个变量设置为''。

    2018-06-21
    有用
    回复
  • 十
    2018-06-21

    一步搞定,不要在onLaunch判断,放在onShow里判断。跳转页面用redirectTo,成功后也用这个返回到原来的页面


    2018-06-21
    有用
    回复
  • 2018-06-20

    获取当前的页面url(带参数的页面url)

    var pages = getCurrentPages()    //获取加载的页面

    var currentPage = pages[pages.length - 1]    //获取当前页面的对象

    var url = currentPage.route    //当前页面url

    var options = currentPage.options    //如果要获取url中所带的参数可以查看options

    //拼接url的参数

    var urlWithArgs = url + '?'

    for (var key in options) {

    var value = options[key]

    urlWithArgs += key + '=' + value + '&'

    }

    urlWithArgs = urlWithArgs.substring(0, urlWithArgs.length - 1)


    获取当前的页面url(不带参数的页面url)


    var pages = getCurrentPages()    //获取加载的页面

    var currentPage = pages[pages.length - 1]    //获取当前页面的对象

    var url = currentPage.route    //当前页面url




    2018-06-20
    有用
    回复
  • 刘弘愿
    刘弘愿
    2018-06-20

    把登录页做成弹出层进行登录

    2018-06-20
    有用
    回复
  • 艾狗蛋
    艾狗蛋
    2018-06-19

    而且当前页面路径没有办法确定额

    2018-06-19
    有用
    回复
登录 后发表内容