小程序系列 - 登录获取 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

标签: 小程序, unionid

不错,不错,对我有帮助! 我要打赏他!GO ->

添加新评论