小程序id : wx4b97adaf0e6cc8a1
事情的始末是这样的,
今早,我发现在我的用户表里,居然有多个 同一手机号 的账户,
我的后台逻辑是这样的,如果当前手机号进行登录,我获取用户的openid,到数据库,进行匹配是否有相同的openid,
存在当前openid,就进行登录
不存在当前openid 就自动注册用户.
然后,我发现 同一个手机号,居然出现了 不同的openid
用户手机号是: 18924071446
以下截图是 分别是openid 登录时间 以及 unionid
截止当前时间,我已经取消了 登录用openid来匹配,改成了 手机号匹配.
差不多 有2-4个手机号,出现了这样的问题
前端传递给我 loginCode ,phoneCode
我用 loginCode 获取的 openid
我是用 loginCode, 和appid(后台写死)、SECRET 请求sns/jscode2session 接口 获取了 openid 和unionid ,然后用 appid 和secret请求cgi-bin/token 获取 accessToken, 然后用 accessToken和前端传递过来的phoneCode 请求wxa/business/getuserphonenumber 接口 来获取手机号。
我获取到openid 和手机号,unionid 。 会一起存入数据库,然后登录的时候我用的openid来匹配。 今天我发现同一个手机号,出现不同openid和uniond,这样的情况,都是 来自于 广东广州的电信手机号
截止 12:23分 ,有热心网友 对我讲解了 问题的根源,我已截图如下,希望对其他遇见同样问题的 同学们 有帮助。

你手机号码是怎么获取的?用户自己填写的还是用的手机号码组件?
你就按正常情况处理不就行了?
一个手机号可以有多个openid,这种情况是正常的,你们的逻辑按这个去处理,不就完了?
openid,是和微信相关,和手机号无关,手机号可能在任何的openid上
我用 loginCode 获取的 openid
我之前查过文档,说是 同一个微信用户,同一个小程序下 的 openid 100%一致的
一个openid绑定一个手机号,第二个openid绑定这个手机号就提示已绑定就行了。你这业务逻辑问题,没想过这个场景吗
谢谢大家,我以后 只用手机号匹配了。