QQ互联登录,出现qzuser用户的原因及解决办法
据我的数据库观察从9月30日开始到今天10月10日,才解决大部分问题。现在明显减少了qzuser
用户 。
在 QQ互联 官网API描述中,出现qzuser
的现象原因如下:
1.
2.也可能是用户使用qq登录时跳过了授权步骤。
qzuser问题定位
但这次确实不是这些个问题,看网上对这个说明较少,都是提问的。所以把 QQ互联 登录,出现qzuser
用户的原因及解决办法说明一下。于其说是解决,其实也算是补救。
实际我已经确认,这是 QQ互联 的BUG。我也测试了,斗鱼、PandaTV
等等,也会出现用户名称为qzuser
。下面是我和 QQ互联 的客服对话记录。
针对这个问题,我下面说说解决办法,在出现此BUG
的情况下。我们有几种解决(补救)办法。
qzuser解决办法
1. 如果自己系统需要绑定自己的账户,而QQ
互联只是一个快捷登录的入口,那么这个比较简单,直接补全信息即可。
2. 如果完全依赖 QQ互联 (没有自己的帐号密码),我现在就是这样。那么会出现用户名都为qzuser
,并且图片都为一个重复的QQ空间Default图片,这种情况下,需要当用户再一次登录的时候判断用户的用户名是否为qzuser
,如果是就强行再让用户登录一次,再次获取用户的头像昵称等。
3. 直接判断用户名,如果用户名为qzuser
,直接提示错误信息,斗鱼和PandaTV
就是这么做的。
我改动了一些逻辑,在登录的时候,会判断一下,然后去更新,因为客服已经回答说明OPENID
不变,示意代码如下:
/**
* 通过openid查询当前用户是否在本站登录过
*/
IUserThird entity = userThirdService.findByOpendId(openId);
SOUser user = null;
//解决腾讯BUG qzuser 用户名问题。
if(null != entity){
//查出用户,直接更新信息
user = userService.selectByPrimaryKey(entity.getUserId());
//判断是不是qzuser用户。
if("qzuser".equalsIgnoreCase(user.getNickname())){
//重新获取用户信息,并且更新名字和头像
SOUser infoUser = (SOUser) QQManager.getLoginInfo(accessToken, openId).get("user");
user.setNickname(infoUser.getNickname());
user.setPortrait(infoUser.getPortrait());
//update
userService.updateByPrimaryKeySelective(user);
}
//登录
TokenManager.login(user);
}
最好还是加一个处理,就当是一个容错处理。
版权所属:SO JSON在线解析
原文地址:https://www.sojson.com/blog/257.html
转载时必须以链接形式注明原始出处及本声明。
如果本文对你有帮助,那么请你赞助我,让我更有激情的写下去,帮助更多的人。