18673179777
获取免费方案
电话咨询
QQ咨询
微信咨询
返回顶部
×

微信小程序登录认证三步搞定:从授权到用户信息同步的完整实现指南

微信小程序的登录认证,表面上看是“获取用户信息”的简单过程,但实际踩坑的人非常多。很多开发者做完后发现:用户换了设备登录不了、token过期后不知道怎么办、后台拿不到手机号……这些问题的根源,往往是把“登录”和“认证”混为一谈了。今天咱们就把这个流程拆开揉碎了讲清楚,你听完就能直接落地。

一、登录认证的核心:不是“获取用户信息”,而是“建立信任关系”

很多新手会以为,微信登录就是拿到用户的昵称和头像。其实真正的目的是:让微信帮你证明“这个用户是他本人”。你想想,用户在小程序里操作,你无法像网页端那样用密码确认身份,所以必须借助微信的OAuth2.0机制。微信给你一个临时凭证(code),你拿这个code去后台换一个“长期令牌”(session_key和openid),这个openid就是用户在你小程序里的唯一身份证。

举个例子:你做了一个点餐小程序,用户A第一次打开时授权了,你存了他的openid。下次他换个手机打开,微信会重新生成code,但后台通过code换到的openid还是同一个。所以openid是跨设备识别用户的关键,而session_key是用来解密敏感数据(比如手机号)的,千万别搞混。

二、标准登录流程的“三件套”:code、session_key、openid

第一步:调用wx.login()获取code。这一步不需要用户点任何按钮,小程序启动时就可以静默调用。code有效期只有5分钟,且一次有效,所以必须立刻传给后端。

第二步:后端拿着code去微信服务器换session_key和openid。接口地址是:https://api.weixin.qq.com/sns/jscode2session,需要传appid、secret、code。注意:secret绝对不能放在前端代码里,否则等于把服务器密码公开了。

第三步:后端生成自定义token(比如JWT),把openid、session_key、过期时间等信息加密后返回给小程序。小程序把token存到storage里,后续所有请求都带上这个token。

这里有个容易踩的坑:session_key是动态变化的。微信官方文档写得很清楚:每次调用wx.login()都会刷新session_key,但如果你用旧的session_key去解密数据就会失败。所以正确的做法是:不要在前端存session_key,每次需要解密时重新调用wx.login()拿到新的code去换

三、用户信息获取:头像昵称 vs 手机号,两个不同的授权机制

很多开发者会误以为“获取用户信息”和“获取手机号”是同一件事,其实完全两码事。

头像和昵称:从2019年开始,微信调整了策略,wx.getUserInfo()不再弹窗,而是需要用户点击

上一篇
租个房还得先证明“我是谁”?搞租房小程序没这些资质,分分钟被下架!
下一篇
物联网app开发流程,物联网app开发流程多少钱