提供微商城·微分销·小程序开店需求
5分钟开通你的微信商城店铺!2020-09-28 作者:秩名
微信应用的一个很大的优势就在于使用过程中是不需要进行注册和显式登录的,大部分问题基本上可以一键解决。但是在授权、登录和获取用户信息的过程中都发生了哪些事情,今天我们就来讨论一下。这篇文章主要分析小程序登录与授权区别:
首先必须要明白,授权和登录实际上是两个操作。
1.1 授权(已废弃)
那授权的作用是啥呢?从小程序官方文档中我们可以看到授权操作只需通过wx.authorize() 接口便可以完成,以下是文档中对授权操作的描述:
提前向用户发起授权请求。调用后会立刻弹窗询问用户是否同意授权小程序使用某项功能或获取用户的某些数据,但不会实际调用对应接口。如果用户之前已经同意授权,则不会出现弹窗,直接返回成功。
也就是说,授权过程实际上只是在小程序前端获得了操作部分wx 接口的访问许可,这个过程实际上是不会与开发者服务器发生任何关系的。那这些访问许可包含哪些内容呢?再来看微信官方提供的scope 列表:

注:新版api已废弃wx.authorize(),具体信息查看https://developers.weixin.qq.com/miniprogram/dev/api/open.html
1.2 登录
所谓的登录就是要让开发者服务器知道当前的用户是谁?在传统的web 应用中,我们必须要让用户输入账号和密码才能实现登录操作。但是在微信应用中,我们可以通过微信服务器来完成这个操作,获取到与当前用户对应的唯一标志(openId),具体操作实现流程如下:
注:每个用户相对于每个微信应用(公众号或者小程序)的openId 是唯一的,也就是说一个用户相对于不同的微信应用会存在不同的openId

从上图中,我们可以看出,小程序中登录步骤如下:
① 小程序前端使用wx.login() 从微信服务器获取code
② 小程序前端将code 发送给开发者服务器,开发者服务器利用appId、appSecret 和code 向微信服务器换换取用户openId 和session_key
③ 开发者服务器自定义登录态并将其与openId 和session_key 关联起来然后写session
④ 开发者服务器将登录态返回给小程序前端,小程序前端使用wx.setStorageSync() 将登录态保存起来
⑤ 小程序前端在执行业务请求时将登录态发送给开发者服务器,以便开发者服务器知道当前操作的用户是哪位。
也就是说,在整个过程中小程序前端是拿不到用户openId 的,它只能通过开发者服务器发给它的登录态来告诉服务器当前用户的信息。登录过程中涉及session_key 和unionId,于是又引出了下面的问题。
保存用户登录态,一直以来都有两种解决方案:前端保存和后端保存。
4.1 后端保存
在1.2 步骤③ 中写session 的时候可以直接设定过期时间,定期通知小程序前端重新进行登录(wx.login)。
4.2 前端保存
因为session_key 存在时效性问题(毕竟是用来查看敏感信息),而小程序前端可以通过wx.checkSession() 来检查session_key 是否过期。所以可以通过这个来作为保存用户登录态的机制,这也是小程序文档中推荐的方法:

推荐文章
是不是很多微信用户在使用微信小程序时会出现这样的问题,比如,突然中断的情况,其实这就是微信小程序闪退。微信小程...
日前,百度陆续开放了多个智能小程序流量入口,具体包括以下三类: 第一类是中心化入口。 用户除了在“我的“菜单可以...
微信应用的一个很大的优势就在于使用过程中是不需要进行注册和显式登录的,大部分问题基本上可以一键解决。但是在授权...
见到 wx.request 的第一眼,就让我想起了 $.ajax 这东西,使用起来确实有很多不方便,不能忍,幸好小程序是支持ES6语法的,所...
十大收银系统品牌有哪些?2025年市面上主流的收银系统排行不分先后,每个收银系统都有各自的特点与优势,下面小编就为大...
目前最好最受欢迎的收银系统品牌有HiShop友数、商米等,每个品牌都有各自的特点和主要发展的行业,下面小编就为大家来介...
餐饮行业是国内规模万亿级别的市场,如今市面上的餐饮品牌门店数不胜数,在如今这个互联网时代,许许多多餐饮门店都开...
连锁超市在选择收银系统的时候,首先会考虑到收银系统的操作便捷,能够给收银员的工作提升效率的同时,避免出现错误,...
超市收银系统百科 超市收银系统是零售业中用于处理销售交易的关键技术,它不仅提高了结账效率,还增强了顾客的购物体...
酒吧收银系统百科 1. 酒吧收银系统概述 酒吧收银系统是专为酒吧、夜店等娱乐场所设计的一套集成化管理软件,它能够实现...