问答 / 1 / 15 / 创建于 3年前
微信快捷登录的用户想要绑定手机号,这个时候两个账号的各个数据如何合并?
(楼主方便的,提供下你们的user表结构)
当你提这个问题的时候,我就大概猜到了,你的user表设计的时候,支持注册来源的微信登录的unionID,同时也支持手机号注册。
这个一开始就要设计考虑好,假设用户第一次注册是通过微信来的,那么进入系统时候,应该提示用户绑定手机号,如果是小程序中的微信登录,可以调用获取手机号完成绑定,如果是网页扫码和微信公众号登录,就不能这样直接获取。然后,对于手机号注册的用户,也可以提供绑定微信的功能。尽量在一开始注册的时候,就完成这个绑定关系。这一点,很多大厂都没做好,比如拼多多。
一个用户两者都注册账号,想要合并的话,就要牵扯很多数据的迁移,需要写sql脚本合并账号,在夜深人静的时候,执行合并数据。
依情况吧。有金钱的把金钱转入到一个账号,另一个账号注销要么手机号绑定两个账号,手机号登陆那选择一个账号登陆现在的大多网站都可以一个手机号绑定多个账号的吧,直接改下逻辑[dogo]
可以用实名用户的身份证作为唯一标识,授权令牌相关信息可以拆分处理,现在授权方式太多了,单独开发会简单点,授权信息、和第三方用户信息单独存储。表之间用实名信息唯一表示关联就好了。
为什么没考虑过拆表呢? user wechat_user wxapp_user mobile_user 无论你是什么渠道,你都要在user表中有一条记录,这样等于是你操作单一的user 就可以了,合并的话 需要询问用户保留哪个,这个不算麻烦,主要是工作量
提供一个思路,拆开,做两个表:用户表,微信用户表。 用户表一般是姓名、手机号等信息,微信用户表一般是头像、昵称、open_id(小程序和公众号的要区分)、unio_id、用户id(关联用户表用户id)。用户表为了显示方便,可以多两个冗余字段,昵称和头像。 这样做的好处是便于扩展,假如后续需要支付宝登陆、需要微博登陆,只需要新建相应的表就可以。 你提出的问题是两条数据如何关联,那还是用户用户表的id和其他用户信息登陆表进行关联。
@feng435263069 这个要看你的定位,比如用户的信息主要是来源于哪里或者有哪些来源。例如用户可以通过手机号注册,然后还可以进行微信登陆,不管是哪种方式先登录,都先不管另外一个表,用手机号码进行关联,用户表id进行绑定。但是没有获取到手机号前,两条信息是无法进行关联的,因此是需要引导用户绑定微信或者获取手机号(微信小程序授权、公众号用户手动填写并进行短信验证)。如果可能会有多种app授权登陆,例如微信、QQ、支付宝等(不包含手机号+密码的方式)的话,不管谁先登陆,需要先往用户表里插入一条信息,然后再在app登陆信息表插入app的open_id、user_id(user表的id)等,等用户授权获取联系方式和姓名的时候再往user表和登录表更新(冗余字段)。
我不赞同把user表和三方授权表放在一起,这个一般都是一对多的关系,三方可以有很多个,自己平台的手机登录,只有一个。
即使是微信登录,也会有很多openid,比如微信网页登录、微信小程序、微信APP登录,都有自己的openid
如果MySQL是8.0的话,可以尝试使用JSON类型、虚拟列、虚拟列索引,实现单表多渠道登录或绑定
github.com/mouyong/laravel-oauth/b...
users
oauths
我要举报该,理由是:
(楼主方便的,提供下你们的user表结构)
当你提这个问题的时候,我就大概猜到了,你的user表设计的时候,支持注册来源的微信登录的unionID,同时也支持手机号注册。
这个一开始就要设计考虑好,假设用户第一次注册是通过微信来的,那么进入系统时候,应该提示用户绑定手机号,如果是小程序中的微信登录,可以调用获取手机号完成绑定,如果是网页扫码和微信公众号登录,就不能这样直接获取。然后,对于手机号注册的用户,也可以提供绑定微信的功能。尽量在一开始注册的时候,就完成这个绑定关系。这一点,很多大厂都没做好,比如拼多多。
一个用户两者都注册账号,想要合并的话,就要牵扯很多数据的迁移,需要写sql脚本合并账号,在夜深人静的时候,执行合并数据。
依情况吧。
有金钱的把金钱转入到一个账号,另一个账号注销
要么手机号绑定两个账号,手机号登陆那选择一个账号登陆
现在的大多网站都可以一个手机号绑定多个账号的吧,直接改下逻辑[dogo]
可以用实名用户的身份证作为唯一标识,授权令牌相关信息可以拆分处理,现在授权方式太多了,单独开发会简单点,授权信息、和第三方用户信息单独存储。表之间用实名信息唯一表示关联就好了。
为什么没考虑过拆表呢? user wechat_user wxapp_user mobile_user 无论你是什么渠道,你都要在user表中有一条记录,这样等于是你操作单一的user 就可以了,合并的话 需要询问用户保留哪个,这个不算麻烦,主要是工作量
提供一个思路,拆开,做两个表:用户表,微信用户表。 用户表一般是姓名、手机号等信息,微信用户表一般是头像、昵称、open_id(小程序和公众号的要区分)、unio_id、用户id(关联用户表用户id)。用户表为了显示方便,可以多两个冗余字段,昵称和头像。 这样做的好处是便于扩展,假如后续需要支付宝登陆、需要微博登陆,只需要新建相应的表就可以。 你提出的问题是两条数据如何关联,那还是用户用户表的id和其他用户信息登陆表进行关联。
如果MySQL是8.0的话,可以尝试使用JSON类型、虚拟列、虚拟列索引,实现单表多渠道登录或绑定
github.com/mouyong/laravel-oauth/b...
users
oauths