1
laoertongzhi 127 天前
微信小程序和公众号 都挂在 一个开发者账号下。
|
2
drymonfidelia OP @laoertongzhi 都挂在一个开发者账号下获取到的 OpenID 也是不一致。主体都是同一个公司的
|
3
laoertongzhi 127 天前 1
|
4
gmyxds 127 天前
1.在机制上,然后用户手动绑定,比如小程序和公众号授权之后,都要求用户绑定手机号,以手机号为账号判定一个用户。或者想办法把小程序和微信公众号关联起来。比如小程序登录之后生成一个 hashkey ,然后让用户把这个 hash-key 发给公众号,然后公众号接受 key 去绑定用户
2.花钱,在微信开放平台开认证,然后创建一个应用,把你的小程序和公众号关联起来。就能拿到统一的 unionid 了。不是网页拿不拿到 unionid 问题,你没绑定就是拿不到的 |
5
BeforeTooLate 127 天前
用户存量多吗,不多那就改方案用 UnionID 。
应该没有通过 OpenID 获取 UnionID 方式吧,如果有倒是简单了转化下即可。 存量用户先用手机号当作用户唯一标识,后期用户用 UnionID ,存量用户再登录的时候也存入 UnionID 。 被用户投诉了好几次几万元余额没了,这个是什么意思? |
6
laoertongzhi 127 天前
@drymonfidelia
你得先理解 OpenID 和 UnionID 。 用户在不同的公众号、小程序(不管是不是同一个主体)下,其 OpenID 就是不一样的。 但如果公众号、小程序 都是挂在一个微信开发平台账号下,那么同一个用户,其 UnionID 就是一样的。 |
7
gmyxds 127 天前
@drymonfidelia 不同产品的 OpenID 不可能一样,一样的只可能是 UnionID
|
8
drymonfidelia OP @BeforeTooLate 因为用户进入小程序又创建了一个用户,登录了新用户导致看不到余额。我们平台为了用户操作方便,绑定了微信就不要求绑定手机号
|
9
laoertongzhi 127 天前
|
10
laoertongzhi 127 天前
这种问题找你们的产品经理啊
|
11
BeforeTooLate 127 天前
@drymonfidelia
#7 那麻烦了,这种情况下你们拿的 openid 已经不具备用户标识属性了。 |
12
drymonfidelia OP |
13
drymonfidelia OP @drymonfidelia 不知道是不是因为没有 snsapi 的权限的问题
|
14
BeforeTooLate 127 天前
@drymonfidelia 把小程序和公众号都绑定再一个开发平台了吗?
|
15
laoertongzhi 127 天前
|
16
yiqiao 127 天前
@BeforeTooLate 用户多也可以用 unionID
#3 楼贴出的方法可以根据用户的 openid 获取 UnionID ,再通过小程序在注册的过程中合并账号。除非,他当时没有把 UnionID 合并起来。 顺便问下,出现这种问题算谁的?产品?测试?还是开发? |
17
BeforeTooLate 127 天前
@yiqiao 看情况前面存量用户压根没有考虑到 UnionID ,现在改用 UnionID 方案,除非保证存量用户在登录小程序前,能在公众号网页页面再登录一次不然获取不到 UnionID 并存入,进而导致这部分直接去小程序登录的人无法判断是否已经注册了。
|
18
blessyou 127 天前
@drymonfidelia #12 印象中用户没有实名认证绑定银行卡是没有 UnionID 的
|
19
RandomJoke 127 天前
微信保证主体下唯一的办法就是 unionId ,要么就自己用手机号。有余额之类的东西,竟然不用手机号做唯一标识啊。。你要是只保存了 openid ,就很麻烦了,赶紧想办法把 unionId 补全,要么就让用户通过手机号关联,不然你的账户体系一定是通不了的,重复注册我理解问题不大,你只要做好唯一关联后,让他的 unionId 能关联上正确的自己的账号那么下次登录就对了
|
20
BeforeTooLate 127 天前
|
21
jstony 127 天前 3
你可以把你的公众号和小程序都绑定在开放平台上,打通 openid 和 unionid ,你现在就有个三个 id ,一个是公众号 openid ,一个是小程序 openid ,一个是 unionid 。
原来的公众号用户如果通过小程序登录,识别不到公众号账户下的资产是正常的,因为他们没有关联上。 你可以在小程序上嵌入一个 webview ,将公众号登录页面放在里面,通过公众号登录拿到公众号的 openid ,而小程序的 openid 和 unionid 在小程序里获取,这样就把三个 id 串起来了。 说白了也就是小程序的用户登录逻辑是通过 webview 嵌入的公众号页面实现的。后期如果发现用户二次打开的时候已经做过 id 打通,也可以直接做无感登录。 |
22
icloudguizhou 127 天前
@drymonfidelia #8 投诉就能退钱吗?之前小程序买东西不发货投诉也不退款,就是诈骗
|
23
drymonfidelia OP @laoertongzhi 官方文档我确实看过了,这个接口有很多用户的 union id 都获取不到,不知道是不是因为 #18 说的用户没有绑定银行卡的原因(感觉这个原因的话不太可能导致这么多用户出问题,已经让客服那边帮忙联系一部分用户核实了)还是#17 说的必须授权 snsapi 的原因(感觉更有可能是这个)
@yiqiao |
24
drymonfidelia OP @jstony 这个点子我也想到并尝试过了,问题是小程序 webview 嵌入公众号的登录页面没办法弹出 snsapi 那个授权窗口,授权不了 unionid
|
25
LeoSpeaker 127 天前 2
静默登录拿不到 unionid 。
你这个情况可以直接使用小程序嵌入 webview ,使用静默登录,然后通过小程序里面的 webview 的跳转到登录成功页面将登录后的参数发送给小程序作为储存即可。 放弃小程序的登录接口。 |
26
RandomJoke 127 天前
@drymonfidelia 理论上这个方法你不用 unionId 也可以,就是拿到公众号的 openId 查询是否有老用户,有就直接登录,没有就用两个 openId 一起注册,相当于两个 openId 做唯一标识。。
|
27
Nitsuya 127 天前 1
小程序已获取到 小程序 OpenId + UnionId.
前提下 小程序里面套个网页做公众号静默授权, 此时就有 公众号 OpenId + UnionId. 在此时 UnionId 肯定是一致的, 公众号 OpenId 就能补全 UnionId 了并关联上小程序 OpenId. 仅限微信, 支付宝不支持小程序做网页授权. 现在你们数据已经乱套了 十分头痛的~ |
28
drymonfidelia OP @Nitsuya 现在确实问题很大,还有很多人又在通过小程序创建的新用户里面充值,导致不能先下线小程序避免进一步混乱,只能暂停小程序注册
|
29
drymonfidelia OP #25 #27 楼的思路我理解了,用静默登录拿到的 openid 和 unionid 绑定好像确实可以,非常感谢
|
30
Nitsuya 127 天前
@drymonfidelia #28 你可以先把 小程序创建的用户全部 剔除来... 改完逻辑. 重新授权 的时候, 再把钱加回去... 唯一的办法了~.
|
31
bestie 127 天前
1. 首先,公众号那边修改原来的授权回调页面,使用 snsapi_userinfo ,以确保之后从公众号这边进来的都能拿到 unionid
2. 新建一个授权回调页面,使用 snsapi_base 静默授权,这个页面嵌入到小程序里,参照#25 说的,用这个 webview 里返回的 openid ,再加上你从小程序这边获取的 unionid 做绑定,这样小程序这边进来的用户和公众号的通了,当然你还要处理两边数据合并的问题 |
32
Nitsuya 127 天前 1
@drymonfidelia #29 还要提醒一下, 只要 AppId 一样, 不管是 OpenId 还是 UnionId, 前 6 位一定是一样的... 记得授权的时候 校验一下前 6 位. 防止别人骚操作 公众号或开放平台, 导致数据错乱进了数据库 是无法纠正的噩耗!
|
33
markgor 127 天前
1 、先去开放平台 注册+认证+绑定对应的小程序和公众号;
2 、小程序的直接获取 unionId 即可。公众号的通过获取用户基本信息接口,传递 openId 过去,换取 unionId 回来。 3 、此时 unionId 均一致了,用户侧做个账户选择就好了 |
34
wOuv7i4e7XxsSOR1 127 天前
这是不测试就上线?但凡懂一点微信开发,多看一点文档,都能知道这个问题吧
|
37
ixwen 127 天前
小程序注册的时候用 webview 获取公众号的 openid 然后将小程序的 openid 跟公众号的 openid 关联一下
|
38
dream7758522 127 天前 via Android
你这个用户数据已经全乱了,我觉得只能公众号和小程序绑定同一手机号,打通数据了。
|
39
vacuitym 127 天前
要注册一个微信开放平台账号,然后小程序和公众号绑定到同一个开放平台,这样才能拿到统一的 unionId
|
40
hlwjia 127 天前 5
以目前团队对微信生态的了解程度,不管你现在的数据是乱还是没乱,都直接用手机号作为 ID 来关联用户吧
这是最快、最完善的解决方案,不用想什么 union id 了,又得搞权限,又得梳理逻辑。 今晚就能写好,所有没有绑定手机号的用户弹窗绑定手机号,绑定之后关联余额,完事。 |
41
weixind 127 天前
@laoertongzhi #10 和产品经理有啥关系?
|
42
laoertongzhi 127 天前
|
43
kucy 127 天前
要求绑定手机号。通过手机号识别用户
|
44
linhongjun 127 天前
最好还是以手机号绑定 作为用户识别吧
|
45
yancyzhao 127 天前 1
微信的生态很好,设计的用户体系也很好,但是一定不要想不开图省事依赖它的机制。尤其是用户标识,用身份证号、手机号甚至自己生成一个吧。万一哪天拓展业务跑去支付宝开小程序、抖音小程序、XX 、XXX ,你可咋整。
|
46
sampeng 127 天前
先不说锅的问题。。。这是一开始就偷懒了。看到个 openid 就当唯一标识了。。结果发现还有一个 id 。。
|
47
leoskey 127 天前
3 楼提醒的接口可尝试。
1. 公众号新用户都保存 unionid 2. 通过 3 楼提醒的接口批量更新老用户 unionid 3. 小程序用户判断 unionid 是否在公众号系统存在 |
48
AIGC2D 126 天前
不同公众号,小程序的 openid 都不一致,只有绑定了开发者平台的 unionid 才是一致的
|
49
samnya 126 天前
就如上所说,首先做好账号合并的逻辑,能够把两个账号的资产合并或者绑定。
然后可以用公众号批量获取用户资料的接口,先把已关注公众号的这部分用户 UnionID 获取回来做静默绑定。 https://developers.weixin.qq.com/doc/offiaccount/User_Management/Get_users_basic_information_UnionID.html#UinonId 对于没有关注公众号的,只能在小程序里面做一个老用户资产绑定的按钮或者弹窗,跳转进 webview ,然后再把登录信息传给小程序做绑定了。 |
50
hwb 126 天前
要是不想折腾又不想影响用户体验。用手机号做一次绑定,分别记录公众号和小程序的 openId ,直接用手机号来判定唯一账号,后续登录还是用公众号和小程序的 openID 去查手机号(或者 userId) 。这个方案只徐亚每个平台用手机号登录一次,后续还是直接拿 openID 。
注意区号 |
51
chanChristin 126 天前
直接强制绑定手机号,不绑定不让用,现在到处都是手机号验证,因为这玩意好用啊。
|
52
rookie8 126 天前
注意啊,是用户,用户,用户必须在微信开放平台( open.weixin.qq.com )绑定公众号后,才会有 UnionID 的,用户不绑定,没有 UnionID 。
|
53
ShotaconXD 126 天前 2
不是很理解为什么非要重度依赖微信, 回头你要加入个支付宝小程序怎么办, 抖音小程序呢?
唯一标识你要从用户身上找啊, 你从平台上找, 那不是给自己找麻烦. |
54
demoplayer88 126 天前
做好账号合并吧 几年前第一次做微信小程序的时候也被这个 openid 坑过 还好是开发的时候就发现了 这个机制从微信小程序刚出来的时候就是这样的了 好几年了 只能说产品没有做好调研 测试开发也不知道 这个线上事故挺严重的
|
55
hlwjia 126 天前
这是不是产品的锅,可能还不那么简单判断。
首先产品经理未必需要知道同一个用户在不同平台的 open_id 是不一样,这个问题应该是技术调研出来的,至于调研出来后谁负责提方案解决,可能每个公司不一样,但一般都是产品和技术商量着来。 |
56
webszy 126 天前
@ShotaconXD 我觉得你说的很对,别的平台的 id 只能作为辅助信息,根本还是得让用户用自己平台的 id ,这样才能捆绑住用户,增加留存
|
57
chf007 126 天前
|
58
Felldeadbird 126 天前
没有 UnionID 也没关系,做一个数据绑定就好了。找手机号用绑定衔接。
如果要把账号数据合并,需要做一些特殊处理,具体要看你们公司业务。 |
59
zhw2590582 126 天前
做过相关微信开发的都知道 openid 是不一样的,这么大的问题,你们居然不测试
|
60
pcdoggy 126 天前
不要重度依赖微信,自己系统的用户 ID 呢?
手机号也是重点(虽然手机号也可能换),现在手机号都是要实名的,之后的唯一性有保证。 小程序的 webview 功能交互挺坑的。 |