收藏
回答

wx.getSetting包裹getUserProfile是不会获取授权弹窗吗?要怎么处理?

getUserProfile(e) {
    wx.getSetting({
      success(res) {
        if (res.authSetting['scope.userInfo']) {
          // 已经授权,可以直接调用 getUserInfo 获取头像昵称
          wx.getUserProfile({
            desc'用于获取用户个人信息'// 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
            success: function (detail) {
              wx.login({
                success: ress => {
                  var code = ress.code; //登录凭证
                  console.log(">>>>>>>>>>code:", code)
                  console.log("encryptedData:", detail.encryptedData)
                  console.log("iv:", detail.iv)
                  wx.request({
                    url: api.getUnionId, //自己的服务接口地址
                    method'post',
                    header: {
                      'content-type''application/x-www-form-urlencoded'
                    },
                    data: {
                      encryptedData: detail.encryptedData,
                      iv: detail.iv,
                      code: code,
                    },
                    success: (res) => {
                      console.log("res:", res.data)
                      if (res.data.code == 'C00000') {
                        util.setToken(res.data.msg);
                        util.setStorageSync("userInfo", res.data.obj);
                        wx.redirectTo({
                          url'/pages/breakpage/breakpage',
                        })
                      }
                    },
                    fail: function () {
                      console.log('系统错误')
                    }
                  })
                }
              });
            }
          });
        }
      }
    })
  },

请问wx.getSetting不能用,要用什么替代?原先使用getuserinfo是可以正常授权的,直接换成getUserProfile点击没反应啊,去掉wx.getSetting后会提示unionid为空,我是新手,请大佬回答下怎么改呢?

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

4 个回答

  • brave
    brave
    2021-04-12

    首先: wx.getUserProfile 需要用户在页面上的点击事件进行触发,并且不能嵌套在任何 api 的回调中,不然会报 getUserProfile:fail can only be invoked by user TAP gesture 错误信息。

    其次:开发版 & 体验版 scope.userInfo 调整将于 4月13日 对齐,统一返回 true,因此将无法通过 wx.getSetting 获取用户的授权状态,毕竟 wx.getUserProfile 类似于一次性的授权,每次调用均需 用户同意授权。

    最后可查看 文章链接开发者通过 wx.login 获取到用户登录凭证 (code),调用微信登录接口(auth.code2Session)将直接返回 openId、unionId(请先确认已在开放平台绑定该小程序,绑定流程:登录 微信开放平台 — 管理中心 — 小程序 — 绑定小程序)

    2021-04-12
    有用 1
    回复
  • 1+N
    1+N
    2021-04-17

    不需要用wx.getSetting,反正我从来没用过


    https://blog.csdn.net/t_332741160/article/details/115801446


    2021-04-17
    有用
    回复
  • 耿霄
    耿霄
    2021-04-12

    周知:getUserInfo 开发版和体验版 已对齐 getUserInfo 匿名表现,正式版将于 4月13日 正式对齐 getUserInfo 匿名表现。

    请开发者使用 getUserProfile 获取用户信息。 小程序登录、用户信息相关接口调整说明:https://developers.weixin.qq.com/community/develop/doc/000cacfa20ce88df04cb468bc52801

    还可以瞅瞅这个 https://developers.weixin.qq.com/community/develop/article/doc/000c8ce9a10070794cfbb0c085b013


    2021-04-12
    有用
    回复
  • 睡前原谅一切
    睡前原谅一切
    2021-04-12

    直接wx.getUserProfile

    2021-04-12
    有用
    回复 4
    • 睡前原谅一切
      睡前原谅一切
      2021-04-12
      不需要getSetting了
      2021-04-12
      回复
    • 黎小军
      黎小军
      2021-04-12
      去掉wx.getSetting后会提示unionid为空,原先用getuserinfo都不会这样
      2021-04-12
      回复
    • 睡前原谅一切
      睡前原谅一切
      2021-04-12回复黎小军
      这没关系好伐?你让你们后端查下 wx.login后的code通过auth2Session获取到的返回值。
      2021-04-12
      回复
    • 睡前原谅一切
      睡前原谅一切
      2021-04-12回复黎小军
      我上午调的。没有用什么getSetting。
      2021-04-12
      回复
登录 后发表内容
问题标签