专注营销系统开发11年为企业开拓营销空间!

微信小程序工具|微信小程序开发|微信小程序制作平台-龙图应用【XcxIP.com】

多年微信小程序专业开发商
中国行业十佳诚信企业、质量、服务

全国咨询热线15321026642

新闻资讯

新闻资讯
当前位置:网站首页>新闻资讯

微信小程序开发登录全流程详解,零基础也能快速上手

发布时间:11-03来源:微信小程序工具|微信小程序开发|微信小程序制作平台-龙图应用【XcxIP.com】

打开微信,扫一扫小程序码,几秒钟内就完成了登录。这个过程快到你几乎感觉不到它的存在,但背后藏着一整套完整的认证流程。很多人觉得小程序登录很神秘,其实拆开来看,逻辑一点都不复杂,而且比传统的账号密码登录要简单得多。今天我就把微信小程序开发登录的全流程掰开揉碎了讲清楚,哪怕你完全没碰过代码,也能看懂每一步在干什么。

微信小程序开发登录全流程详解,零基础也能快速上手

先说说为什么小程序登录不用输账号密码。你回想一下,在电脑上登录一个网站,通常要注册、设密码、绑定手机号,一套流程下来至少三分钟。但小程序不一样,微信已经替所有用户做完了身份认证,每个微信用户都有一个唯一的openid,相当于微信给每个人发了一张身份证。小程序只要拿到这个openid,就能识别出你是谁。所以小程序登录的本质,就是向微信要这张身份证的过程。

那这张身份证怎么要?流程分两步走。第一步,小程序前端调用wx.login这个接口,微信会返回一个临时凭证,叫code。这个code有效期只有五分钟,而且只能用一次,用完就作废。第二步,小程序把这个code发给你自己的服务器,你的服务器拿着这个code,再去找微信的服务器换openid和sessionkey。这里有个关键点,code换openid的操作必须在你自己的服务器上完成,不能在手机端直接调微信接口,因为换取接口需要用到AppSecret,这相当于你小程序的密码,暴露在手机端就等于是把家门的钥匙挂在了门外。

很多初学者在这里容易犯一个错误,就是以为拿到openid就完事了。其实还差一步,就是建立你自己的用户体系。微信给的openid相当于身份证号,但你自己的数据库里得有一张用户表,记录这个openid对应的用户是谁,叫什么名字,有没有头像,是普通用户还是VIP。所以完整的流程是:拿到openid之后,去你自己的数据库里查一下,这个openid是不是第一次来,如果是第一次,就在用户表里新建一条记录,然后返回一个你自己生成的token给前端。这个token相当于你给用户发的临时通行证,之后用户再请求其他接口,带上这个token就行了。

说到token,这里面有个细节值得多说两句。很多教程会让你直接用openid当登录凭证,前端每次请求都带上openid,后端拿openid去查用户。这种做法不是不行,但有一个隐患:openid是永久不变的,如果它被截获了,就等于账号被盗了。而token是有时效性的,比如七天过期,过期了再重新登录一次就行。所以正规的做法是,服务器生成一个随机的token字符串,存到数据库里,同时把token返回给前端。前端每次请求都带上token,服务器先验证token有没有过期,再通过token找到对应的用户。这就好比你去游乐场玩,不是拿身份证进去,而是买一张当天的门票,门票丢了第二天重新买就行,但身份证丢了可麻烦大了。

sessionkey这个东西也值得一提。它和openid是一起返回的,但它的用途不在登录本身,而在解密用户信息。比如你想获取用户的手机号,或者读取用户的微信昵称和头像,这些数据都是加密的,你需要用sessionkey来解密。这里有个坑,sessionkey的有效期和code一样,也是临时的,而且如果用户在小程序里改了头像或者昵称,sessionkey也会失效。所以解密用户信息的操作,最好在登录后马上做,不要存起来等以后用。最近微信还出了一个新规,鼓励开发者用手机号快捷验证来代替传统的昵称头像获取,因为手机号验证更安全,而且能省去很多隐私合规的麻烦。

再讲讲登录状态的保持。你肯定有这种体验,昨天打开一个小程序,今天再打开,还是登录状态,不用重新授权。这是怎么做到的?前端在拿到token之后,会把它存到小程序的storage里,相当于一个本地的小仓库。下次启动小程序,先检查storage里有没有token,如果有,就默认是登录状态,直接进入主界面。但这只是前端层面的判断,真正的验证在后端。前端带着token去请求数据,后端发现token过期了,会返回一个401错误,前端收到这个错误就知道登录失效了,再跳转到登录页重新走一遍wx.login的流程。这个过程在用户感知上几乎是零延迟的,所以你会觉得自己一直都在登录状态。

还有一个容易踩的坑,就是小程序冷启动和热启动的区别。冷启动是你从微信主页点开小程序,或者搜索后打开,这时候小程序会重新执行App.onLaunch的代码。热启动是你从小程序切到别的应用,再切回来,这时候小程序还在后台活着,不会重新执行onLaunch。如果你的登录逻辑写在onLaunch里,热启动时就不会重新走登录流程,可能会导致token过期了还不知道。解决办法是把登录检查放在首页的onShow里,每次页面显示的时候都检查一遍token状态。这是我踩过很多次坑之后才总结出来的经验。

说说实际开发中的推荐做法。现在微信官方推荐用云开发来搭建小程序后端,云开发自带登录能力,你只需要调用.init,再调用云函数,openid就自动帮你处理好了,连token管理和sessionkey解密都封装好了。如果你是零基础,我强烈建议先试试云开发,能省掉搭建服务器、配置域名、处理HTTPS证书这些繁琐的环节。但如果你已经有自己的服务器,或者业务逻辑比较复杂,那还是老老实实走传统的code换openid的流程,毕竟自己掌控的数据更灵活。

整个登录流程走下来,你会发现核心其实就三件事:向微信要身份凭证、把凭证换成自己的登录凭证、维护好登录状态。每一步都有现成的接口和文档,难点不在技术,而在理解整个流程的逻辑。我见过很多新手卡在code换openid那一步,就是因为没搞明白为什么不能在前端直接换。当你理解了整个流程之后,再去翻微信官方文档,会发现每个接口的参数和返回值都变得特别清晰。

说到底,微信小程序登录的设计初衷,就是让开发者少操心用户认证,把精力放在业务逻辑上。只要跟着流程走一遍,把每个环节的原理吃透,你会发现登录这块真不是个事。而且这套流程不止适用于小程序,很多App的微信登录、网页的微信扫码登录,底层逻辑都是相通的。学会一次,到处能用,这笔账怎么算都不亏。

分享到:0 用手机看
微信小程序开发登录全流程详解,零基础也能快速上手

拍下二维码,信息随身看

试试用手机扫一扫,
在你手机上继续观看此页面。