mymps蚂蚁分类信息5.8微信登录系统会自动随机分配一个wx_前缀的用户名,用户体验非常差。
下面我们来看一下怎么解决这个BUG先看下通过access_token、openid获取用户信息有哪些参数:
爱动手的小伙伴操练起来,侧边栏目有专为土豪和懒癌准备的收费附件下载。
那么我们看到返回的有用户昵称、头像,那么问题就来了,干嘛不直接使用用户的昵称呢。
打开/include/wxlogin/wx_callback.php这里是微信的返回地址
我们看38行$json_obj = get_wxuser();
$access_token = $json_obj['access_token'];
$openid = $json_obj['openid'];
$json_obj_more = get_wxuser_more();
$prelogo = $json_obj_more['headimgurl'];
$logo = $prelogo;
我们看这里是获取用户信息赋值,但是没有用户昵称,我们可以加一行$nickname = $json_obj_more['nickname'];
再看76行$userid = 'wx_'.$timestamp.rand(0,100);
这里是微信自动生成wx_前缀用户名,我们把$nickname赋值给$userid。但是我们要考虑一个问题,如果用户的昵称与现在用户库的重名,那么就会登录失败。这就要先做个查询如果没有这个用户就直接赋值,如果有就自动生成一个用户。代码如下:if($db->getOne("SELECT COUNT(id) FROM `{$db_mymps}member` WHERE userid = '$nickname'")< 1) {
$userid =$nickname;
}else{
$userid = 'wx_'.$timestamp.rand(0,100);
}
不会修改的直接下载修改好的包:https://www.xuanjingsi.com/