小程序获取用户信息
UnionID 机制说明
开发前准备
在微信开放平台绑定小程序:开放平台 管理中心-小程序-绑定小程序
小程序获取UnionID途径
- 通过
wx.login + code2Session
,前提是(本项目不涉及,暂不考虑移动应用微信授权登录):开发者帐号下存在同主体的公众号,并且用户已经关注了该公众号;开发者帐号下存在同主体的公众号,并且用户在该公众号使用过微信服务号网页授权。 - 通过
wx.getUserInfo
,使用<button open-type='getUserInfo' ></button>
拉起用户信息授权,用户允许授权取得用户信息后,发给后端解密出 unionid。
同时有小程序应用和使用服务号网页授权的H5应用,使用第二种方式更稳妥,可保证无论用户是否关注公众号、或者是否在服务号使用过“网页授权获取用户基本信息”接口,都可取到 unionid。
关于 wx.getUserInfo 与 wx.login
两个方法无依赖关系,可根据需要独立调用。
wx.login
,可获取 openid,满足一定条件也可获取 unionid(上述第一种途径)。通过wx.login
获取微信code,发给后端,后端去微信服务端可换取到 openid 和 sessionKey。不使用 unionid 的项目,可使用 openid 区分用户,直接使用wx.login
实现静默登录。小程序支付需要用到 openid。wx.getUserInfo
,可获取用户微信昵称、头像等用户信息以及 unionid。通过wx.getSetting
获取用户信息的授权情况,如果用户信息authSetting['scope.userInfo']
已授权,可直接调用wx.getUserInfo
获取用户信息。如果用户未授权,通过<button open-type='getUserInfo' ></button>
拉起用户信息授权,用户允许授权,可调用wx.getUserInfo
取得用户信息。
小程序授权登录处理的步骤
1.调用wx.login
获取微信code
2.把微信code发给后端查询 openid, unionid, 手机号
- 老用户:如果是已绑定的老用户,后端可根据微信code直接从微信服务端换取到 unionid,进而再根据 unionid 查询到有绑定关系的 openid、手机号等。
- 新用户:
如果是新用户,且满足上述获取 unionid 途径1 的条件,后端可根据微信code直接从微信服务端换取到 unionid。
如果是新用户,且不满足上述获取 unionid 途径1 的条件,后端根据微信code只能从微信服务端换取到 openid。调用wx.getSetting
查询用户是否已允许用户信息authSetting['scope.userInfo']
的授权。- 已允许授权则直接调用
wx.getUserInfo
获取用户信息发给后端解密出 unionid。 - 未允许用户信息授权则显示
<button open-type='getUserInfo' ></button>
按钮,用户点击按钮,拉起询问用户信息授权的弹框,用户允许授权,再调用wx.getUserInfo
取得用户信息,发给后端解密出 unionid。
<button open-type='getPhoneNumber'></button>
按钮,用户点击按钮,拉起询问用户手机号授权的弹框,用户允许授权,取得信息发给后端解密出手机号。 - 已允许授权则直接调用
3.新老用户均已取得 openid, unionid, 手机号,把这些信息发给后端查询登录凭证 token。
4.取得 token后,存储在 storage 与 globalData。信息存储在 storage,当小程序进程被杀掉,再次打开小程序时,globalData数据已销毁,可从 storage取登录信息,保留用户登录状态。
以上,欢迎讨论,如有错漏也欢迎指正,希望对你有帮助?
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!