$url = 'https://api.weixin.qq.com/sns/userinfo?access_token='
. $token . '&openid=' . $openid . '&lang=zh_CN';
$info = json_decode(file_get_contents($url), true);
$nick = $info['nickname'] ?? '用户' . substr($openid, -4);
扫码登录成功后,后台用户列表里新账号的昵称一栏是空的,头像也是默认灰块,同一批用户里只有走手机号注册的显示正常。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。
原因不复杂,授权链接里的 scope 只申请了基础身份,用户信息接口拿不到昵称和头像字段。接口返回 200 不代表字段有值,缺字段时被静默写成了空串。
「第三方昵称缺失」改完先别急着全量,挑一台机器放半天,真有问题这段时间就能看出来。改完隔一天再看一次,当场正常不代表能稳住。
处理上按这个顺序:把授权 scope 补到能取用户资料的级别,重新走一遍授权流程;拉取用户信息后对 nickname 做空值兜底,用用户加后四位 ID 占位;头像地址存远程 URL 之前先判空,别把空串写进 usermeta;用一个从没授权过的号测,老账号的授权缓存会掩盖问题。
改完只确认一件事:新授权的账号昵称和头像都有值,用户中心不再显示空白名字。
