AbuCoder 2021-04-06 21:13 采纳率: 50%
浏览 1036

微信小程序用户信息新接口getUserProfile问题

大家好,我以前用mpvue做的微信小程序。现在我面临更新,但是微信废弃了原来的接口。使用了新的接口getUserProfile;我修改我程序就始终不成功,哪位大神帮我看看到底怎么修改;

以下为代码:

点击是提审登录弹窗html代码

<float ref="login">
      <div class="dl_login ug">
        <div class="text">为了更好的体验功能,请登录!</div>
        <button open-type="getUserInfo" @getuserinfo="login" class="btn_ok">好的</button>
      </div>
    </float>

js代码

//登录
    async tryLogin(force = true){
      console.log("走tryLogin了吗?")
        return new Promise(function(resolve, reject){
          wx.getSetting({
              success: function (res) {
                  if (res.authSetting['scope.userInfo']) {
                      wx.getUserInfo({
                          success: async function (res) {
                              console.log("userinfo:",res)
                              resolve(await root.login(res.userInfo))
                          }
                      });
                  } else if(force){
                    root.$refs.login.show()
                    reject()
                  }
              }
          });
        })
    },

    async login(userData) {
        return new Promise(function(resolve, reject){
          wx.login({
              success: async (res) => {
                const re = await rime.Main.auth.force(res.code)
                if(!!!userData.nickName) userData = userData.mp.detail.userInfo
                userData.openid = re
                userData.parent = wx.getLaunchOptionsSync().query.uid || 0
                const ret = await rime.Main.login.force(userData)
                Object.assign(userData, ret.user)
                userData.score = userData.score || 0
                wx.setStorageSync('userInfo', userData);
                root.userInfo = userData
                root.$refs.login.hide()
                resolve(userData)
              }
          })
        })
    },

原来我点击“”好的“”按钮就弹出来微信登录授权

现在不弹窗授权,也能登录只是后端保存的用户信息来登录了。但是用户昵称显示“微信用户”,头像也出不来

我把新的方法是替换了也不行

//登录
    async tryLogin(force = true){
      console.log("走tryLogin了吗?")
        return new Promise(function(resolve, reject){
          wx.getSetting({
              success: function (res) {
                  if (res.authSetting['scope.userInfo']) {

                    //替换的新接口开始、、、、、、、、、
                     wx.getUserProfile({
                         desc: '为了更好的体验请先登录!', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
                         success: async function (res) {
                          console.log("新接口得到的数据?:",res)
                               resolve(await root.login(res.userInfo))
                           }
                       })
                       //替换的新接口结束、、、、、、、、、

                  } else if(force){
                    root.$refs.login.show()
                    reject()
                  }
              }
          });
        })
    },

    async login(userData) {
        return new Promise(function(resolve, reject){
          wx.login({
              success: async (res) => {
                const re = await rime.Main.auth.force(res.code)
                if(!!!userData.nickName) userData = userData.mp.detail.userInfo
                userData.openid = re
                userData.parent = wx.getLaunchOptionsSync().query.uid || 0
                const ret = await rime.Main.login.force(userData)
                Object.assign(userData, ret.user)
                userData.score = userData.score || 0
                wx.setStorageSync('userInfo', userData);
                root.userInfo = userData
                root.$refs.login.hide()
                resolve(userData)
              }
          })
        })
    },

请大家帮忙我哪里搞错了。是不是那个html里的按钮写的不对啊!

  • 写回答

1条回答 默认 最新

  • AbuCoder 2021-04-08 09:25
    关注

    此问题我已经解决了

    评论

报告相同问题?