为什么wx.getUserInfo无法获取用户信息?
发布于 6 年前 作者 plei 5364 次浏览 来自 问答
wx.getSetting({
      success: res => {
        if (res.authSetting['scope.userInfo']) {
          // 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框
          wx.getUserInfo({
            success: res => {
              // 可以将 res 发送给后台解码出 unionId
              this.globalData.userInfo = res.userInfo;
               
              // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回
              // 所以此处加入 callback 以防止这种情况
              if (this.userInfoReadyCallback) {
                this.userInfoReadyCallback(res)
              }
            }
          })
        }
      }

    });



我在app.js里这样写了 但是globalData.userInfo 里的值还是null

我想实现一打开小程序就自动获取用户信息 要怎么做?

4 回复

没授权之前必须要用按钮触发授权了,授权以后就可以用 wx.getUserInfo 的 success回调 获取信息了,同时 fail回调也做个判断,看看授权关没关

微信限制小程序端随便用户的信息了,据说是为了安全和用户体验去考虑,必须用button去触发,防止小程序端在用户不授权情况下反复询问

…  多年之前官方就出通知 尽早替换.

1. 在wxml中使用按钮,设置开放能力类型,绑定相关事件,如tap

<button open-type=“getUserInfo” catch:tap=“getUserInfo”>授权</button>

2. 在js中添加事件对应的方法,从方法的参数中可以获取用户信息,比如event.detail.userInfo,在控制台可查看

Page({

/**

  * 获取用户信息的事件绑定函数

  */

getUserInfo(event) {

    console.log(event);

}

});

3. 授权一次后,你的wx.getUserInfo正常使用了,之后每次都可以直接获取用户信息了

回到顶部