收藏
回答

wx.getUserProfile 在点击事件触发时,没有弹窗,直接进入fail?

使用一个button 绑定的bindtap = "onTapGetUserInfo", 但是开发工具里没有弹出授权的窗口,直接是进入到了getUserProfile 的fail中,在我写的例子中,点击确认授权后,弹出了“您拒绝了授权”的toast。使用开发工具版本为最新的 Stable 1.05.2103190, 调试基础库为2.10.4。(我也尝试了2.16.0、2.15.0,都没有弹出授权弹窗,直接进入了fail。)开发工具和真机都没有弹出授权窗口。

电脑是 Macbook Pro, 系统 macOS Big Sur 11.2

手机 iPhone 12 Pro, 微信版本 8.0.3,系统 iOS 14.4.2




/**
   * 用户点击获取用户信息按钮后触发,新的授权
   */
  onTapGetUserInfo: function(e) {
    var that = this
    console.log("user allow get user info")
    try {
      wx.getUserProfile({
        desc:"需要使用您的头像和昵称信息来发起活动",
        lang: "zh_CN",
        success: res => {
          // 可以将 res 发送给后台解码出 unionId
          app.globalData.userInfo = res.userInfo
          console.log(res.userInfo)
          app.updateUserInfo(app.globalData.userInfo);
          console.log('update userInfo in auth.js')
          var userInfoAuthStatus = 1
          that.setData({
            userInfoAuthStatus: userInfoAuthStatus,
            userInfo: res.userInfo
          })
          wx.showToast({
            title: '授权成功',
          })
          wx.hideLoading()
          setTimeout(function () {
            that.navigateBack()
          }, 200)
        },
        fail: res => {
          //拒绝授权
          wx.showToast({
            title: '您拒绝了授权',
            icon: 'none'
          })
          return;
        }
      })
    } catch (error) {
      //无法调用时使用老版本替代
      wx.getSetting({
          success: function(res){
              if (!res.authSetting['scope.userInfo']) {
                //进入未授权 -- wx.getUserInfo获取用户信息 
                wx.getUserInfo({
                    success: function(ress) { 
                      //ress用户数据
                      app.globalData.userInfo = res.userInfo
                      console.log(res.userInfo)
                      app.updateUserInfo(app.globalData.userInfo);
                      console.log('update userInfo in auth.js')
                      var userInfoAuthStatus = 1
                      that.setData({
                        userInfoAuthStatus: userInfoAuthStatus,
                        userInfo: res.userInfo
                      })
                      wx.showToast({
                        title: '授权成功',
                      })
                      wx.hideLoading()
                      setTimeout(function () {
                        that.navigateBack()
                      }, 200)
                    }
                })
              }
          }
      })
    }


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

3 个回答

  • Eric
    Eric
    2021-04-13

    已解决,desc里的文案改短一些就行了

    2021-04-13
    有用
    回复
  • 维她命系
    维她命系
    2021-04-13

    开发者工具 1.05.2104092、基础库 2.16.0 测试正常,可参考以下代码

    wx.getUserProfile({
        desc: '更新用户信息',
        success(res) {
            console.info(res);
            //...
        },
        fail(err) {
            console.error(err);
        },
    })
    
    2021-04-13
    有用
    回复
  • 有棱角的胖子
    有棱角的胖子
    2021-04-13

    console.log一下fail中的res,看一下提示什么

    2021-04-13
    有用
    回复 2
    • Eric
      Eric
      2021-04-13
      谢谢,打出的信息是getUserProfile:fail desc length does not meet the requirements,我把desc里的文案改短了就行了,但是文档里不是说是30个字符嘛。。这意思是要15个字内?
      2021-04-13
      回复
    • 有棱角的胖子
      有棱角的胖子
      2021-04-13回复Eric
      一个中文等于两个字符
      2021-04-13
      回复
登录 后发表内容
问题标签