小程序取消授权后重新调取授权

昨天做了一个获取小程序微信运动步数demo


获取微信用户信息的方法,详情https://developers.weixin.qq.com/community/develop/doc/0000a26e1aca6012e896a517556c01

获取小程序步数授权,当用户取消授权后我们需要去引导用户去开启服务,首先去wx.getSetting()然后在里面去wx.openSetting()设置需要调去开启服务的名称(当前用到的是scope.werun)

    const appId = 'wxsfsfdsfds';
    const secret = 'sdfsdfsdfsfsdfsdfs'
    const that = this
    wx.login({
      success: function (res) {
        const { code } = res;
        wx.request({// 获取微信运动必须使用sessionKey 所以先从该接口拿到sessionKey,提示请求https://api.weixin.qq.com 不在以下 request 合法域名列表中需要去“设置”==>"项目设置"==>“不校验合法域名、web-view(业务域名)、TLS 版本以及 HTTPS 证书”勾选上就可以了
          url: 'https://api.weixin.qq.com/sns/jscode2session',
          data: {
            appid: appId,
            secret,
            js_code: code,
            grant_type: 'authorization_code'
          },
          method: 'GET',
          success: function (res) {
            const { session_key, openid } = res.data;
            that.setData({
              session_key: session_key,
              openid: openid
            })
            wx.getWeRunData({//拿取到微信步数的encryptedData和iv
              success: function (res) {
                const { encryptedData, iv } = res;
                var pc = new WXBizDataCrypt(AppId, session_key) //进行解码
                wx.getUserInfo({
                  success: function (res) {
                    const { userInfo } = res
                    var data = pc.decryptData(encryptedData, iv)
                    const { stepInfoList } = data
                    let average
                    let steps = []
                    stepInfoList.map((k, v) => {
                      average = (average || 0) + k.step
                      const date = k.timestamp = that.setTimeStamp(k.timestamp)
                      steps.push(k.step)

                      return { average, date, steps }
                    })
                    steps.sort((a, b) => { return a - b })
                    that.setData({
                      userInfo,
                      openid,
                      session_key,
                      encryptedData: encryptedData,
                      iv: iv,
                      average: Math.ceil(average / 30),
                      stepList: data.stepInfoList.reverse(),
                      steps: steps,
                      isLoading: false
                    })
                  }
                })
              },
              fail: function (res) {
                that.setData({
                  getWerun: false
                })
              }
            })
          }
        })
      }
    })
    wx.getSetting({//引导用户允许微信获得你的公共信息,重新唤起微信运动授权
      success: function (res) {
        wx.openSetting({
          data: {
            "scope.werun": true
          },
          success: function (res) {
            that.setData({
              getWerun: true
            })
            wx.redirectTo({
              url: '/pages/start/start?id=userConsole',//跳到中转页面再跳回当前页面
            })
          }
        })
      }
    })

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值