微信小程序获取登陆授权

隔了大概一年多再次写小程序,发现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又进行了二次封装,如果有大佬看到错误希望能指正一下,感谢

### 微信小程序实现微信授权登录方法 #### 获取用户同意授权微信小程序中,要实现微信授权登录功能,首先要引导用户进入授权页面。这通常是在首次打开应用或特定操作触发时完成。此时,用户会被提示是否允许小程序获取其个人信息。 ```javascript wx.getUserProfile({ desc: '用于完善会员资料', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写 success: (res) => { console.log(res.userInfo); } }) ``` #### 使用 `code` 进行登录认证 当获得用户的许可之后,下一步就是调用微信提供的接口来换取临时登录凭证 `code`[^2]。这个过程不需要暴露任何敏感信息给前端环境: ```javascript wx.login({ success: res => { if (res.code) { // 发起网络请求 wx.request({ url: 'https://example.com/login', data: { code: res.code }, method: 'POST' }) } else { console.error('登录失败!' + res.errMsg) } } }); ``` #### 处理会话密钥 `session_key` 服务器端接收到由客户端发送过来的 `code` 后,可以通过它向微信官方API交换得到 `openid` 和 `session_key`。需要注意的是,出于安全性考虑,`session_key` 不应当被返回至小程序端,而应在服务端妥善保管并仅限于内部处理逻辑使用。 #### 验证用户身份与保存用户信息 最后一步是利用从微信处取得的信息(如 `openid`)作为唯一标识符创建或匹配现有账户记录,并将必要的公开属性存储起来以便日后识别和服务个性化需求。对于涉及隐私的内容,则需遵循相关法律法规的要求进行保护。 ```sql INSERT INTO users(openid, nickname, avatarUrl) VALUES (:openid, :nickname, :avatarUrl) ON DUPLICATE KEY UPDATE nickname = VALUES(nickname), avatarUrl = VALUES(avatarUrl); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值