收藏
回答

小程序,授权后,无法实时获取用户信息

不论 使用wx.openSetting 还是 wx.authorize 为用户授权后,我都是通过重新加载onLoad方法,来获取用户信息。

但是,在开发工具中,这种方案是好使的。我将项目上传至手机进行预览时,却无法获取用户信息。这是乍回事了?

开发工具:


点击允许执行如下函数:

  toAuthorized:function(e){//重新授权 

    var that=this;

      return new Promise(function (resolve, reject) {

        //NO.1 首选判断下是未授权还是拒绝授权

        wx.getSetting({

          success: (res) => {

            console.log(res.authSetting['scope.userInfo']);

            if (res.authSetting['scope.userInfo']==undefined) {  //NO.1-1 未授权

                  wx.authorize({

                    scope: 'scope.userInfo',

                    success() {

                      //用户已经同意小程序使用用户信息,后续调用 wx.getUserInfo 接口不会弹窗询问

                       wx.getUserInfo();

                       resolve(res);

                    }

                  });

            } else if (res.authSetting['scope.userInfo'] ==false){//NO1-2 拒绝授权

                  wx.openSetting({

                    success: function (data) {

                      resolve(data);

                    },

                    fail: function (data) {

                      reject(data);

                    }

                  });

            }

          }

        });

      }).then(

  function(data){//授权成功,重载onload方法来更新用户信息

    that.onLoad();


  },

  function(data){//授权失败执行代码

        //提示未授权可能造成的一些影响

        console.log(data);

      });

  }

点击允许后的效果

(1)开发者工具中,授权后重载onload,页面可以获取到用户信息


(2)但是,在手机中预览,无法获取数据。


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

1 个回答

  • 角谷静
    角谷静
    2017-08-17

    我再补充下:onload的方法内容:

     onLoad: function (options) {

        var that = this;

        app.getUserInfo(function (userInfo) {//获取微信用户信息

          that.setData({

            userInfo: userInfo,

            userAccount:app.globalData.userAccount

          })

        });

      }

    主要是通过调用全部变量中的getUserInfo方法来获取用户信息 ,并赋值给当前页面的userInfo变量

    2017-08-17
    有用
    回复
登录 后发表内容