小程序系列 - 登录获取 UnionID 方式
一、UnionID 机制说明
如果开发者拥有多个移动应用、网站应用、和公众帐号(包括小程序),可通过 unionid 来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号(包括小程序),用户的 unionid 是唯一的。换句话说,同一用户,对同一个微信开放平台下的不同应用,unionid 是相同的。
要获取 unionid,需先注册微信开放平台并完成开发者认证,然后把应用绑定到微信开放平台。
二、UnionID 登录获取方式
小程序登录获取 unionid 主要有两种方式,有丰富公众号开发经验的童鞋,千万不要用公众号的思维直接带入,不然会给自己挖坑。下面详细说明:
1. wx.login + code2Session
小程序端调用 wx.login 获取 code 传给后端,后端通过 code2Session 接口获取 unionid,但要满足下面两种条件之一:
- 开发者帐号下存在同主体的公众号,并且该用户已经关注了该公众号。
- 开发者帐号下存在同主体的公众号或移动应用,并且该用户已经授权登录过该公众号或移动应用。
否则 code2Session 接口只会返回 openid 相关信息,不会返回 unionid,很明显单纯使用这种方式不能满足我们的需求。
code2Session 接口官方文档地址: https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/login/auth.code2Session.html
2. wx.getUserInfo + 后端解密
小程序端调用 wx.getUserInfo 获取用户的加密数据 encrypted_data 和 iv 传给后端,后端通过解密获取 unionid。
效验及解密官方文档地址:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/signature.html
前后端可以通过两种方式配合实现最佳登录逻辑。
本文首发于马燕龙个人博客,欢迎分享,转载请标明出处。
马燕龙个人博客:https://www.mayanlong.com
马燕龙个人微博:http://weibo.com/imayanlong
马燕龙Github主页:https://github.com/yanlongma
不错,不错,对我有帮助! 我要打赏他!GO ->