如何玩转小程序登录体系

1,176 阅读4分钟

背景

微小企业侧重于小程序低成本的开发。C2C、 B2C等企业更侧重于拥有完整生态、人群数量较多的微信生态。无论是什么样的企业想搞好小程序必须要学会玩转小程序登录体系。

登录体系完整流程

基础部分解析

api以及参数解析

  • wx.login: 是小程序的api,小程序内可以直接调用,返回值为code

  • code: 用户登录凭证,有效时间为五分钟,是第三方消费者服务器向微信服务换取session_key和openid的参数之一

  • appid: 每一个微信小程序在申请完成时,微信都会给提供应用唯一的标识,也就是appid,是第三方消费者服务器向微信服务换取session_key和openid的参数之一

  • appsecret: 秘钥,一般是可以通过微信公众平台进行查看以及重置,但是非特殊情况这个秘钥尽量避免重置操作,同样是第三方消费者服务器向微信服务换取session_key和openid的参数之一

  • openid: 用户针对某一应用的唯一标识,不更换应用此标识不会更改,通常第三方应用会依赖此参数做用户标识,以确保用户的准确,当然一些用户数据也要与openid关联

  • session_key:会话密钥,用户数据的加解密通讯需要依赖会话密钥完成(比如获取用户手机号后进行解密),此参数会在用户调用wx.login换取code的时候被更新。如果要保证第三方服务器和微信服务器之间的联系,一般情况下小程序执行wx.login换取code后第三方服务器要及时向微信服务器换取session_key

  • 自定义登录态:通常是第三方服务器根据openid以及一定的算法逻辑生成的,并且是唯一不重复的(例如:token、PPU、uid等根据应用去制定自己的唯一登录信息)

    问题解析

    • 小程序可以直接向微信服务器发送请求吗?
      答:答案是否定的,小程序管理平台需要设置request合法域名,不允许设置api.weixin.qq.com等域名,所以无法向微信服务器发起合理请求
    • 如果第三方服务器没有自定义登录态,而是直接将openid等数据返回给小程序是否存在不安全问题?
      答:针对不同业务来说,如果简单的业务逻辑在保证信息安全的前提下是可以的,但是不建议。相对来说用户群体比较大,并且涉及到商品信息、支付等操作的应用(比如转转、京东等)决不允许将openid直接暴露给客户端作为唯一登录态。

优化部分解析

说明

  • 自定义登录态的存储:小程序的缓存为storage,可以根据需要进行同步异步存储,将返回的登录信息存入我们的缓存中
  • 携带自定义登录态进行请求:可以统一封装ajax,在每次发送请求的时候读取缓存中的自定义登录态,并且将其存放在请求头的header中(可以根据需要放在cookie或者token中)

问题解析

  • 自定义登录态是否存在过期行为,如果过期了应该怎么处理呢?
    答:一个合理的登录态信息正常会存在过期行为,这就看我们第三方服务器怎么做处理了。当然我们如果拿之前旧的登录态信息去获取业务数据,就会按照与合作方制定的的接口格式定义指定的失效状态码,然后小程序重新执行基础部分的操作进行最新登录态信息的获取
  • 封装一套完整的登录体系需要合作方提供哪些东西呢?
    答:1.通过code换取登录态的接口
    2.双方共同制定完整的登录态校验规则(如:发送请求携带登录态,过期返回状态码信息等)

友情链接