3069关注8825浏览
先说一下前提:
同一主体开发了公众号+多个小程序组合,为了避免在多个小程序之间重复注册,使用了unionid机制进行会员数据关联。
在直接调用wx.getUserInfo的时候一切正常,只是默认要弹出请求授权窗口,拒绝授权的使用openSetting再次请求授权
好了,后来说wx.getUserInfo将要作废,建议使用button按钮获取userInfo信息授权。于是我们把默认的wx.getUserInfo改成了默认wx.login,那么问题来了,wx.login根据unionid机制,部分会返回unionid,部分用户不返回unionid(用户仅操作当前小程序并未关注或者操作过同主体下其他小程序)
https://developers.weixin.qq.com/miniprogram/dev/api/unionID.html
然后我们要再判断如果wx.login接口没有返回unionid字段,跳转到一个单独的授权页面,点击<button open-type="getUserInfo" 的按钮授权获取用户信息。
然后我们再根据获取的unionid字段匹配数据库会员资料,未注册再次跳转到单独的注册页面,进行手机号码验证注册
问题1:wx.login接口返回 unionid规则复杂,难以理解
Why?为什么要有这么奇葩的规则?同主体小程序绑定到了开放平台,进行了认证。为什么要这么奇怪的规则,增加接口复杂性。经常会误解为都会返回unionid字段,一般开发用的测试号由于都操作过同主体其他小程序都会返回unionid
问题2:点击<button open-type="getUserInfo" 按钮回调,e.detail.userInfo 已经包含了用户昵称、头像、地区、性别等信息,唯独不返回openid,unionid字段,需要用e.detail.iv + code 去服务器解密获取。难道openid,unionid字段比用户昵称、头像等信息更隐私吗?为何要如此大费周章才能给openid,unionid字段
问题3:wx.getUserInfo作废能给具体时间吗?开发工具、体验版都已经弹窗不建议用了,但是正式版又可以使用。开发天天要被问“我看到被人家的xxx能用弹窗授权噢”,每天都要解释,开发到底是要用呢还是不用呢?
-
至过去的我
2044人对此回答表示赞同
我是未来的你,你现在是不是在年找寻小程序答案。你不要感觉诧异,给你来信原因,就是让你不在后悔。今天去学习如何推广小程序,相信......点击查看更多> -
裸奔的花生
20人对此回答表示赞同
拿openid和unionid做关联,就不用老是调用授权,还有就是觉得只要用户授权允许以后,调用wx.login都能拿到unionid才是科学的做法
展开202回复分享发布于 6年前评论(2)
收起评论
-
贺纸张
19人对此回答表示赞同
wx.getUserInfo接口线上规则没有变更线下也是有办法解决调试问题的增加一个专门的授权页测试的时候先扫授权二维码再扫其它的就可以直接调用wx.getUserInfo逃。。
展开191回复分享发布于 6年前评论(1)
收起评论
-
Zavier 2019-02-22 21:28
哈哈,但是也并非长久之计啊
回复
-
-
Lola
17人对此回答表示赞同
关于wx.getUserInfo的问题也是千百遍的解释,真是醉了,感觉文档里的东西没一点权威性
展开170回复分享发布于 6年前评论(0)
收起评论
-
Cruz_
17人对此回答表示赞同
这不都后台的事么。。。。前台就判断下权限而已,又没啥的
展开170回复分享发布于 6年前评论(0)
收起评论
-
zqsg走一波
13人对此回答表示赞同
希望简单一点,只要绑定了开放平台,就返回unionId
展开131回复分享发布于 6年前评论(1)
收起评论
-
Fiona徐诗吟 2019-02-17 10:25
是的。要么wx.login都返回,要么都不返回算了,弄得这么复杂。而且现在只要求开发者取消wx.getUserInfo,又没有考虑好完整的替代问题。<button按钮回调又不带出openid,unionid字段
回复
-
-
Gina失踪了
11人对此回答表示赞同
我们团队在开发这的时候也感觉很麻烦。
展开111回复分享发布于 6年前评论(1)
收起评论
-
暗恋未遂 2019-02-14 22:27
嗯,问题是现在要改,不能直接wx.getUserInfo直接弹窗授权,要跳转到一个页面设置一个按钮<buttonopen-type="getUserInfo",回调后后端解密获取unionid。相当复杂
回复
-
-
Eli4321
10人对此回答表示赞同
第一个和第二个问题,老话题了,unionid机制简直是奇葩。
展开104回复分享发布于 6年前评论(4)
收起评论
-
夏洛克制不住自己 2019-02-26 14:59
哈哈哈哈~
回复 -
偷生者 2019-02-28 22:31
因为这个,我已经被老板鄙视了N百次了,我一直说“xxx这个功能马上就要失效了”,结果人家更新了一个版本,依然能用,老板就拿着手机过来,啪啪啪的打我的脸哟~我这个脸都肿了……
回复 -
Asher 2019-03-02 20:49
这个接口,只要你提交版本审核通过,就可以在线上使用,一般是审核不通过的,不过你可以看看美团,更新时间绝对是接口废弃之后,但是人家就能上线,腾讯投资的,你懂得
回复 -
陈雪 2019-03-04 18:15
是啊,天天被人问,那别人怎么可以。
回复
-
-
吴晴
6人对此回答表示赞同
不算麻烦吧,我写好了
展开60回复分享发布于 6年前评论(0)
收起评论
-
Gabriel-郑
3人对此回答表示赞同
正常啊,腾讯的unionid就是皮~
展开31回复分享发布于 6年前评论(1)
收起评论
-
锦鲤本鲤 2019-02-19 00:39
unionid机制真的好鸡肋
回复
-
-
lele
2人对此回答表示赞同
为了处理getUserInfo的问题,增加了几百行代码
展开21回复分享发布于 6年前评论(1)
收起评论
-
Carter 2019-02-25 00:46
哈哈哈,我都更新了3个版本,配合坑爹的unionid机制各种情况报bug
回复
-
getUserInfo需要用户点授权这个是比较麻烦的体验不好,我的意思是只要用户调用了一次getUserInfo以后,之后调用wx.login都会返回unionid
是的。应该是绑定开放平台后都返回unionid,或者干脆wx.login不返回,需要unionid用getUserInfo才能获取,这样反而逻辑简单了