微信小程序的登录逻辑

本文介绍了微信小程序的登录逻辑,包括用户授权、获取个人信息、处理用户授权响应、登录接口的使用,以及新用户和已注册用户的处理策略。强调了wx.login()方法获取code的重要性,以及session_key的安全管理。

微信小程序的登录逻辑

先来一张微信登录的流程图:

鉴于小程序的限制,不能强制用户刚进小程序就登录,需要一个按钮,来引导用户进行登录

具体实现步骤:

   1、当用户进入微信小程序时,首先我们先判断用户是否授权过此小程序

wx.getSetting({//wx.getSetting方法获取用户的当前设置(查看是否授权)
    
    sucsess:res=>{//调用成功的回调函数	

         if (res.authSetting['scope.userInfo']) {//如果res.authSetting['scope.userInfo']有值时,代表已授权
            
        }else{//否则就是没有授权

        }
    }
    
})

2、如果没有授权,我们通过一个按钮来实现授权登录

//在微信小程序开发文档中,我们可以知道当button组件的open-type="getUserInfo" 并结合bindgetuserinfo事件,可以获取到用户信息(是否授权)

<button open-type="getUserInfo" bindgetuserinfo="getuserinfo">授权</button>

3、通过bindgetuserinfo事件,我们可以获取到个人的信息、加密偏移数据、加密用户信息(e.detail获取)

getuserinfo(e){

     console.log(e.detail);//可以获取到个人的信息、加密偏移数据、加密用户信息

}

4、用户可以授权登录,也可以取消授权

4.1、用户取消授权

//当用户取消授权时,我们可以做一个提示

  wx.showModal({//显示模态框
        title: '警告',
        content: '您点击了拒绝授权,将无法进入小程序,请授权之后再进入!!!',
        showCancel: false,
        confirmText: '返回授权',
        success: function (res) {
          // 用户没有授权成功,不需要改变 isHide 的值
          if (res.confirm) {
            console.log('用户点击了“返回授权”');
          }
        }
      })

4.2、用户授权了

wx.login({//登录
      success: (res) => {//成功的回调
        // console.log(res.code);//获取临时登录凭证code
        if (res.code) {//当有临时登录凭证code码时,我们请求登录接口
            
            //请求登录接口
            
        }

    }
})

5、根据登录接口返回的code码,判断用户是否时新用户

5.1、如果不是新用户,我们就直接保存下token(服务器返回的token)

5.2、如果是新用户,我们就要先注册,在登录

//根据登录返回的code码,我们在需要注册的里面,请求注册接口,并配置好参数、请求方式等

//例如:登录接口code码返回10000时,代表未注册,返回0时,代表注册过

if (data.code == 10000) {
          
         //注册请求接口

 } else if (data.code == 0) {

     wx.setStorage({//保存token
        data: token,
        key: 'token'
      })
    
  }

6、当用户注册成功后,在调登录接口,保存token。在有些页面需要使用token

7、在步骤1中,当我们授权过时,我们要看token是否存在

8、当token存在时,我们直接执行逻辑代码

9、当token不存在时,我们就需要登录,登录后判断返回的code码,在根据code码判断用户是否是新用户。最后保存token

 

 

到这里,微信登录的逻辑就完成了~~~~

注:wx.login()方法,在成功回调可以获取临时登录凭证(code),需要先获取,在调用。多次调用,在每次调用前都要获取。时登录凭证 code 只能使用一次

会话密钥 session_key 是对用户数据进行 加密签名 的密钥。为了应用自身的数据安全,开发者服务器不应该把会话密钥下发到小程序,也不应该对外提供这个密钥。

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值