微信小程序与微信公众号同一用户登录问题

最近在做微信小程序与微信公众号登录合并的接口。整理相关资料以及个人认识的心得写了这篇文章与大家一起分享。


首先,简单说下我遇到的问题是我们的程序调用微信小程序得到openid,然后通过openID得到用户的唯一标识,用户得以登录,然而,当我们调用微信公众号也同样的到openid,同一以用户两个不同的openid,不能区分是否为同一用户,然后发现无论调用微信小程序还是微信公众号同一个用户的到unionid是相同的,所以我们就用unionid来区分是否为同一用户。


UnionID机制说明:

如果开发者拥有多个移动应用、网站应用、和公众帐号(包括小程序),可通过unionid来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号(包括小程序),用户的unionid是唯一的。换句话说,同一用户,对同一个微信开放平台下的不同应用,unionid是相同的。


1、对于小程序获取unionid:


接口地址:


https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code

请求参数说明:


1 参数          是否必须    说明
2 appid          是    应用唯一标识,在微信开放平台提交应用审核通过后获得
3 secret         是    应用密钥AppSecret,在微信开放平台提交应用审核通过后获得
4 js_code      是    填写第一步获取的code参数
5 grant_type    是    填authorization_code
然后通过加密转换 获取 unionid,这里就不多说,文档说的很清楚


2、对于公众号获取unionId:
1、先拿code获取网页授权access_token以及openid


接口地址:


https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=JSCODE&grant_type=authorization_code

请求参数说明:


1 参数          是否必须    说明
2 appid          是    应用唯一标识,在微信开放平台提交应用审核通过后获得
3 secret         是    应用密钥AppSecret,在微信开放平台提交应用审核通过后获得
4 code           是    填写第一步获取的code参数
5 grant_type     是    填authorization_code
2、可以看到除access_token外,还可以获得openid,用拿到的access_token和openid获取unionID


接口地址:


https://api.weixin.qq.com/sns/userinfo?appid=APPID&secret=SECRET&code=JSCODE&grant_type=authorization_code

请求参数说明:


1 参数          是否必须    说明
2 access_token 是 接口调用凭证
3 openid         是    授权用户唯一标识
4 lang           否    一般为固定值zh_CN



在返回值里就包含有用户的unionID。这里不再详述。


发表评论 / Comment

提示:本文章评论功能已关闭