收藏
回答

(已解决)请教,关于wx.getUserInfo修改后,获取授权状态的方式

问题模块 框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
API和组件 小程序 Bug wx.getUserInfo 工具 6.6.6 1.9.91


       首先,确认一点 ,我在app.js里是否已经无法完成用户授权流程了?因为授权需要用到button 好像没有app.wxml这一说。        其次,基于上面的想法,我将授权移到了第一个页面,app.js会事先根据getUserInfo返回是否失败来存储一个用户是否授权的变量,在第一个页面根据这个变量判断页面是展示授权还是正常显示。        那么问题就在于,用户未授权,我给他展示了官方文档中提到的button,用户点击它,弹出授权,这没问题,可是我怎么去监听用户接下来的操作,用户点了拒绝 还是同意?        小白一枚,可能是我阅读文档的疏忽,麻烦大佬们不舍赐教,谢谢。


最后一次编辑于  2018-05-15  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏投诉关注问题回答

7 个回答

  • You can you up
    You can you up
    2018-05-14

    点击拒绝相当于没点击button,同意才会触发bindgetuserinfo

    2018-05-14
    赞同
    回复 4
    • Zq
      Zq
      2018-05-14
      谢谢 说得简单点,点击拒绝和点击取消 点击事件event里detail返回不一样
      2018-05-14
      回复
    • Zq
      Zq
      2018-05-14回复You can you up
      不是吧 我这边打日志 同意和取消 都有日志
      2018-05-14
      回复
    • You can you up
      You can you up
      2018-05-14回复Zq
      不好意思是我记错了,我是根据e.detail.encryptedData 还有iv 进行判断的 ,拒绝里面没这俩信息
      2018-05-14
      回复
    • Zq
      Zq
      2018-05-14
      没事 还是帮大忙了 3q
      2018-05-14
      回复
  • @🐲较瘦
    @🐲较瘦
    2018-05-15

    如果用户授权了,就把信息存储起来。如果拒绝了,你是获取不到信息的。就可以根据这个做判断,如果用户要进行的操作需要用到个人信息,就再次给个button让用户去授权

    2018-05-15
    赞同
    回复 1
    • Zq
      Zq
      2018-05-15
      嗯 已经解决了 谢谢
      2018-05-15
      回复
  • 张洪建
    张洪建
    2018-05-15

    同意和拒绝都会触发bindgetuserinfo。

    加个验证好了:

    //授权访问

    bindGetUserInfo: function (e) {

    if (e.detail.userInfo != undefined) {

    wx.setStorageSync('user', e.detail.userInfo);

    this.loginF(e);

    }

    },


    2018-05-15
    赞同
    回复 1
    • Zq
      Zq
      2018-05-15
      嗯 已经解决了 谢谢
      2018-05-15
      回复
  • Can🌴
    Can🌴
    2018-05-15

    先思考下问题,

    你的小程序是不是没有用户信息就玩不起来了,没有游客模式的么?

    再思考个问题

    一定要一进来就获取用户信息么,不能延后么?

    最后再思考

    怎么放这个按钮

    2018-05-15
    赞同
    回复 4
    • Zq
      Zq
      2018-05-15
      嗯 确实在改动之前需要考虑好这些再动手 我这边业务有这个需求所以避免不了要去实现它 其它看到的小伙伴们 在动手之前可以考虑下 以便达到更好的用户体验 最后 感谢回复
      2018-05-15
      回复
    • 讲不出再见
      讲不出再见
      2018-05-16
      当然是单独放一个页面啦,可以参考摩拜
      2018-05-16
      回复
    • 灿
      2018-05-16
      官方考虑做小游戏的感受没有? 我们实现个邀请对战功能,受邀请者 点邀请链接进来之后,需要把用户昵称头像上传服务器,如果你们这么改,我们还得单独设计一个 按钮页面,让用户点了才能进入房间。 你们如果真想改,能不能小游戏和小程序有点区别呢?
      2018-05-16
      2
      回复
    • Wang
      Wang
      2018-05-16
      官方有没有考虑作为管理系统形式的小程序一进去肯定是要求获取用户信息的,你这么一改这种形式的小程序就麻烦了
      2018-05-16
      回复
  • 南风
    南风
    2018-05-15

    打印e出来,拒绝的时候会返回errMsg"getUserInfo:fail auth deny",允许会返回errMsg"getUserInfo:ok",根据这个来判断允许拒绝

    2018-05-15
    赞同
    回复 5
    • Zq
      Zq
      2018-05-15
      是的 谢谢了 不过 一般要用到用户信息 所以可以干脆根据 var userInfo = event.detail['userInfo'] 是否为undefined来判断
      2018-05-15
      1
      回复
    • 迪迪迪迪迪武
      迪迪迪迪迪武
      2018-05-16
      你们没发现苹果和安卓点击取消返回的不一样吗
      2018-05-16
      回复
    • Kyle
      Kyle
      2018-05-16回复Zq
      我发现了一个有点坑的地方,就是安卓机上,当用户删除小程序微信仍保留授权信息,此时再次进入小程序点击授权按钮并不会弹出授权提示框,但如果此时用e.detail携带的信息和后台进行数据传输就会出现问题,因为encryptedData和iv是实时的,而已经获取授权后点击按钮返回的不是,所以此时应该调用getSetting()接口来判断是否有过授权,然后再去调用getUserInfo()和后台进行数据传输。
      2018-05-16
      回复
    • Zq
      Zq
      2018-05-16回复迪迪迪迪迪武
      朋友 我这边拿到的日志对比是一样的 有时间的话 求详细的差异对比 3q
      2018-05-16
      回复
    • Zq
      Zq
      2018-05-16回复Kyle
      有点没明白,不会弹授权框的话,我不会触发接下来获取用户信息的方法 encryptedData的实时性好像是两小时,如果我在打开小程序就调用了wx.login和wx.getUserInfo 这样接下来拿到的encryptedData 还会是不实时的吗? 感谢交流
      2018-05-16
      回复
  • 小黑马
    小黑马
    2018-05-16

    我感觉你存授权变量有问题,可以用这个判断是否授权过,

        wx.getSetting({

          success: res => {

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

              return true

            } else {

              return false

            }

          }

        })


    2018-05-16
    赞同
    回复 1
    • Zq
      Zq
      2018-05-16
      刚刚去查文档 发现了件尴尬的事 前两天我还记得 scope.userInfo 这个字段打上了废弃的标签,现在又没了。。。 关于我的判定方式 文档依据在这: wx.getUserInfo(OBJECT) 当用户未授权过,调用该接口将直接报错。 当用户授权过,可以使用该接口获取用户信息。我正好能直接拿用户信息。 欢迎探讨 感谢回复
      2018-05-16
      回复
  • Donie
    Donie
    2018-05-16

    app.js里是否已经无法完成用户授权流程了 ?  楼主这个问题的答案是无法完成了吧 ?

    2018-05-16
    赞同
    回复 1
    • Zq
      Zq
      2018-05-16
      是的 需要用button才能唤起授权弹窗 详见公告 https://developers.weixin.qq.com/blogdetail?action=get_post_info&lang=zh_CN&token=384460955&docid=000aee01f98fc0cbd4b6ce43b56c01
      2018-05-16
      回复