当前位置: 首页 >文章 > 做好用户获取第一步,微信小程序 OpenID 和 UnionID 详解
收藏
分享

做好用户获取第一步,微信小程序 OpenID 和 UnionID 详解

举报产品研究笔记产品研究笔记发布于 2021-05-065641阅读0点赞
对有多个应用的开发者来讲,只有通过 UnionID 来区分用户的唯一性,才能实现多个应用间的账号打通...

OpenID 和 UnionID 是什么

OpenID 是微信提供给开发者的用户唯一标识。然而当开发者拥有多个移动应用、网站应用、公众账号(包括小程序)时,同一用户、不同应用下的 OpenID 是不一样的。

而同一个微信开放平台账号下的不同应用,用户的 UnionID 是唯一的。

因此,对有多个应用的开发者来讲,只有通过 UnionID 来区分用户的唯一性,才能实现多个应用间的账号打通。



应该使用哪个 ID 登录

理论上讲,当产品有App、小程序、公众号等多种形式时,用 UnionID 是最好的选择,否则会因为同一用户在不同应用下的 OpenID 不一样导致产生多个账号,那处理起来就很麻烦了。


然而 UnionID 并不是那么容易获取的


微信小程序最新的限制是:

1.必须使用一个专用按钮控件让用户主动点击,否则无法弹出授权弹窗

2.用户必须点击「允许」同意小程序获取公开信息

下面这个就是获取 UnionID 的授权弹窗

以上2步,每一步都会造成一定的用户流失。所以有的开发者会使用 OpenID ,以最大程度的降低用户获取的成本,从而推动注册用户数的快速增长。

拿拼多多来说,用户打开小程序之后会静默获取 OpenID 并生成账号,可以正常使用购物车、历史记录等服务。用户在「个人中心」页面点击「更新资料」时就会触发授权弹窗获取公开信息和 UnionID。

对于不同的业务场景,会有各自最适合的选择。深入研究下微信的机制,或许能有一些启发,在某些场景下可以尝试优化用户获取的路径。



小程序 xxID 获取机制

在小程序的官方文档里有一张图解释了小程序调用wx.login接口的登录流程。不过那张图除了开发能看懂,一般人应该都看不懂什么意思。翻译成一般人都能看懂的图,小程序登录流程是这样的:

1.首先,开发者可以在小程序中静默调用登录接口,拿到一个凭证

2.小程序把凭证发送到开发者的服务器上

3.服务器拿着这个凭证以及小程序密钥向微信接口请求换取 OpenID

4.微信接口返回 OpenID 给开发者服务器,满足特殊条件时会一并返回 UnionID

5.开发者服务器创建登录态并返回给小程序,从而完成登录

其中第4点,在满足下面任何一个条件时可以同时获得 UnionID 和 OpenID:

1.如果开发者账号下存在同主体的公众号,并且该用户已经关注了该公众号

2.如果开发者账号下存在同主体的公众号或移动应用,并且该用户已经授权登录过该公众号或移动应用

此时获取该用户 UnionID 是不需要用户再次授权的。


除了调用登录接口,用户在小程序中支付完成5分钟内,开发者可以直接通过 getPaidUnionID 接口获取该用户的 UnionID,也不需要用户授权。



总结一下:

OpenID可以无感获取

而无感获取 UnionID 必须满足以下任一条件:

1 用户已经关注了同主体的公众号

2 用户已经授权过同主体的其他应用获取 UnionID

3用户刚刚通过小程序完成了支付

否则就必须让用户主动点击按钮并允许获取公开信息后,才可以获得 UnionID。



公开信息有哪些

最后说说微信的用户公开信息(UserInfo)究竟包含哪些信息:

1.微信昵称

2.微信头像图片的URL,如果用户没有头像,URL会是空的。如果用户更换了头像,原有头像的URL会失效

3.用户性别:未知、男性、女性

4.所在国家

5.所在省份

6.所在城市

7.国家、省份、城市所用的语言:英文、简体中文、繁体中文

与用户信息一并返回的还有一串加密信息,转交给开发者的服务器解密之后,就可以得到用户的 OpenID 和 UnionID 了。


一件比较 tricky 的事情是,如果只是需要在小程序中展示用户头像和昵称,可以使用 <open-data>,微信在渲染小程序的时候会显示用户的头像和昵称。但是此时只是显示出来能被用户看到,开发者并不能拿到用户头像昵称的数据,所以这个时候就不要想什么分享到聊天的时候小程序卡片标题能带上用户昵称了。

<open-data type="userAvatarUrl"></open-data>

<open-data type="userNickName"></open-data>

通过<open-data>除了可以不经过授权直接展示头像、昵称之外,还可以直接展示:

用户性别

用户所在国家

用户所在城市

用户所在省份

用户的语言

群名称(用户曾经分享过小程序的群)










本文原创,未经作者允许不可转载!

更多内容,欢迎关注作者微信公众号:产品研究笔记!


0条评论
别默默看啦~登录/注册一起参与讨论吧~

暂无评论

请选择举报理由

违反法律法规

侵犯个人权益

有害网站环境

更多训练营>>

为你推荐 · 训练营(全勤打卡报名费全额返累计全额返用户133,794人)

【6月】人像后期案例实操训练营
距离开班仅剩7天62人已报名
【7月】7天轻松入门C4D小练习
距离开班仅剩19天11人已报名
【7月电脑剪映】短视频剪辑入门训练营
距离开班仅剩29天32人已报名
猜你喜欢
Blender快捷键汇总

2019-11-25

讲师虎虎 发表

Blender快捷键汇总
AI快捷键(常用)

2019-11-25

讲师虎虎 发表

AI快捷键(常用)
Keyshot常用快捷键有哪些?

2019-11-25

讲师虎虎 发表

Keyshot常用快捷键有哪些?
AU常用快捷键

2019-11-25

讲师虎虎 发表

AU常用快捷键
Pro/E通用快捷键总结

2019-11-25

讲师虎虎 发表

Pro/E通用快捷键总结
AU快捷键汇总

2019-11-25

讲师虎虎 发表

AU快捷键汇总
特惠
充值
7折购
今日还在继续学习的你,太棒了!
7
折扣券可用于
年费无限VIP
立 即
使 用
此活动优惠不可与其他活动叠加使用
有效期:000000
消息
登录即可查看消息记录
建议
意见
官方
客服
在线咨询客服热线

您可以与在线客服进行沟通获得帮助

工作日:9:00~22:00节假日:9:00~18:00

联系在线客服

您可以电话联系客服进行沟通获得帮助

工作日:9:30~18:30

400-862-9191
虎课
积分
免费学习90000+个教程!
配套素材、源文件一键下载!
昨日学员已学习了42,072
并提交了342份作业!
登录后立即学习!
loading
微信扫码关注即可登录
您需要同意协议才可以进行登录
登录虎课网,每天免费学课程全站 90000+ 视频会员教程 | 每日可免费学 1
为确保账户信息安全
请先进行真实姓名验证后进行充值付款
立即验证