微信小程序获取登陆授权

隔了大概一年多再次写小程序,发现api中有些已经改了,今天总结一些微信获取登陆授权的步骤。因为现在授权必须由用户主动触发,所以需要button按钮

第一步:在wxml写button按钮

<button bindgetuserinfo="login" open-type="getUserInfo">登陆</button>

第二步:js文件中首先调用wx.getsetting()获取登陆授权,然后调用wx.login()拿到code,把code传到后台换取openid和session_key。如果需要uid则需要调用wx.getUserInfo().拿到enc,iv。走后台接口把code,session_key,enc,iv全部返给后台就可以拿到uid了。

  login() {
    var that = this;
    wx.getSetting({//用户登陆授权
      success: res => {
        console.log('开始获取uninid')
        wx.login({//用户登陆获取code传给后台,拿到sessionlkey,和openid,
          success: res => {
            // console.log(res)
            that.setData({
              code: res.code
            })
            app.globalData.request.get({ code: res.code }, 'getSessionKey').then(res => {
              console.log('login')
              that.setData({
                sessionk: res.data.session_key
              })
              console.log(that.data.sessionk)
              wx.getUserInfo({//获取iv,enc
                lang: "zh_CN",
                success: res => {
                  app.globalData.request.get({//向后台发送参数拿到用户信息
                    code: that.data.code,
                    enc: res.encryptedData,
                    iv: res.iv,
                    session_key: that.data.sessionk
                  }, 'getUserData').then(res => {
                    console.log('发送成功')
                    console.log(res.data.data)
                    that.setData({
                      blocks:true
                    })
                    wx.setStorage({//用户信息存储到本地
                      key: 'userinfo',
                      data: res.data.data,
                    })
                  }, err => {
                    console.log(err)
                  })
                  // console.log('userinfo' + JSON.stringify(res))
                }

              })
            }, err => {
              console.log('发送失败')
            })
          }
        })

      }
    })

  },

上面就完成了,如果需要第二次判断登陆授权,我这里收藏了两种方法,第一个是将用户信息存储到本地,每次进入页面进行判断,第二种是判断getsetting中的 scope值是否为true,为true则是已经授过权。上面的request又进行了二次封装,如果有大佬看到错误希望能指正一下,感谢

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值