小程序中的授权登录

详情可以参考https://developers.weixin.qq.com/community/develop/doc/0000a26e1aca6012e896a517556c01

一.授权

效果


效果

代码


  
  
  
  

授权都授权了什么,包含了啥内容呢?

根据微信官方提供的scope 列表,有以下内容:


image.png

二.登录

openId是识别一个用户的标识,只要进入了小程序 , 就会有一个openId ,通过openId ,就能判断出登录的用户是谁。

登录的步骤

① 小程序前端使用wx.login() 从微信服务器获取code

② 小程序前端将code 发送给开发者服务器,开发者服务器利用appId、appSecret 和code 向微信服务器换换取用户openId 和session_key

③ 开发者服务器自定义登录态并将其与openId 和session_key 关联起来然后写session(定义登录过期时间)

④ 开发者服务器将登录态返回给小程序前端,小程序前端使用wx.setStorageSync() 将登录态保存起来

⑤ 小程序前端在执行业务请求时将登录态发送给开发者服务器,以便开发者服务器知道当前操作的用户是哪位。

  //checkSession检查登录态(通过session_key,openid来得到)是否过期
  wx.checkSession({
    success(){
      console.log("success")
    },
    fail(){
      var that = this;
      //登录
      wx.login({
        success(res) {
          if (res.code) {
            //获取code
            var code = res.code;
            //在小程序规定请求地址通过appId,appSecret,登录时获取的code 来获得json数据
            var url = 'https://api.weixin.qq.com/sns/jscode2session?appid=' + that.data.appId + '&secret=' + that.data.secret + 'SECRET&js_code=' + code + '&grant_type=authorization_code';
            //向服务器发起请求获取session_key,openid
            wx.request({
              url: url,
              data: {
                session_key: "",    
                openid: ""
              }
            })
          }
          else{
            console.log('登录失败!' + res.errMsg)
          }
        }
      })
    }
  })

以上我们用代码说明了第一步,第二步,那第三步是什么意思呢?

详解第三步:写session

刚刚说的都是前端保存 ,可以通过wx.checkSession() 来检查session_key 是否过期
现在我们要说后端,在后端写session 的时候可以直接设定过期时间,定期通知小程序前端重新进行登录(wx.login)。
session如何写:https://www.cnblogs.com/xjnotxj/p/7239663.html

你可能感兴趣的:(小程序中的授权登录)