目录

两个华为账号登录获取的OpenID相同

问题现象

用户使用华为账号登录后发现应用内的信息是其他用户的。

背景知识

华为账号登录包括使用“华为账号登录”按钮登录和使用自定义按钮登录两种方式。华为账号登录成功后会返回Authorization Code给应用客户端,应用客户端将Authorization Code传到应用服务端,服务端通过Authorization Code获取到Access Token,再使用Access Token调用解析凭证接口获取UnionID/OpenID/手机号码和其他用户信息。应用会将解析出来的OpenID当成华为账号的唯一ID与应用自己的用户关联。

问题定位

  1. 根据开发者反馈的华为账号登录代码片段排查登录流程是否有误。
  2. 查看提供的日志打印,对比返回的OpenID。发现两次返回的OpenID有一个字母的大小写是不同的。
  3. 考虑到OpenID是大小写敏感的,建议开发者排查下是否做了大小写区分。

分析结论

经过排查后发现,数据存入到数据库时是做了大小写区分的,但是查询时没有做大小写区分,导致两个不同的手机号查询到了两个OpenID,从而导致登录到了同一个账号。

修改建议

开发者在数据库中新增、修改、查询OpenID时保留大小写格式。