微信小程序登录的实现

微信小程序登录的实现

开发微信小程序必然会涉及到登录功能的实现,不同的技术团队对微信小程序登录实现的方法也不相同,以下是我做过的微信小程序登录实现思路。

  1. 前端在微信小程序的入口方法中通过wx.login()方法获取code,并通过wx.request()方法请求服务端接口将code传给服务端
  2. 服务端得到code后将小程序的appid+appsecret+code一同发送给微信接口服务获取sessio_key和openid等信息,服务端此时会根据openid判断当前的用户的登录状态,如果用户是登录的,直接将sessionId及用户信息传给前端,如果用户是未登录的状态则返回用户的sessionId为空,前端此时就可以判断用户的登录状态
  3. 用户未登录状态下,前端展示手机号一键登录按钮用来获取用户微信绑定的手机号,用户点击按钮获取成功之后将手机号的加密串和openid传给服务端,服务端将手机号的加密串解密后在服务端将登录状态与手机号,openid和session_key关联,自定义登录状态。然后服务端生成一个sessionId,加上其他信息一起返回给前端。
  4. 前端获取到sessionId及用户信息之后存入到storage中。以便每次请求服务端接口时携带sessionId。
  5. 服务端根据前端携带的sessionId查询openid和session_key并查找到相关联的用户,返回业务数据

概述:这种实现方式是前端不存储登录状态,每次进入小程序都会在入口方法中先根据code获取小程序的登录状态,如果登录直接保存服务端返回的登录标志sessionId,如果未登录,则前端只需要获取手机号传给服务端进行登录,也就是只要用户不点击退出登录,用户是一直登录的状态。

改进:(添加关联unionID)通过以上的步骤可以看出整个登录的过程是根据openid来唯一记录登录此小程序的用户的,通过openid就会有一个问题,也就是如果一个公司主体下有多个小程序,则同一用户在这多个小程序下的登录状态是无法进行关联的,也就是无法实现单点登录,然后引入了unionID,因为同一用户,对同一个微信开放平台下的不同应用,UnionID是相同的。实现上在第3步之前增加了一个获取unionID的步骤,前端在获取用户手机号的之前增加了一个获取用户信息的按钮,获取用户信息成功之后将用户信息发送给获取用户unionID的接口,服务端解密用户信息获取unionID返回给前端,前端查看有unionID即隐藏此按钮,表示用户已经和unionID绑定,可以直接点击手机号一键登录获取手机号登录

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

www.www

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值