美文网首页
小程序中的授权登录

小程序中的授权登录

作者: 方_糖 | 来源:发表于2019-01-17 15:43 被阅读0次

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

    一.授权

    效果


    效果

    代码

    <view>
      <open-data type="userAvatarUrl"></open-data>
      <open-data type="userGender" lang="zh_CN"></open-data>
      <button type="primary" open-type="getUserInfo" lang="zh_CN" bindgetuserinfo="onGotUserInfo">获取用户信息</button>
      
    </view>
    
    授权都授权了什么,包含了啥内容呢?

    根据微信官方提供的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

    相关文章

      网友评论

          本文标题:小程序中的授权登录

          本文链接:https://www.haomeiwen.com/subject/gkpxdqtx.html