功能概述
为了提升用户体验,减少用户填写评论表单的操作步骤,我们在博客系统的评论功能中实现了输入QQ号自动获取昵称的功能。当用户在QQ号输入框中输入QQ号码并失去焦点时,系统会自动调用第三方API获取该QQ号的昵称,并自动填入昵称输入框。
实现效果
- 主评论表单:输入QQ号后自动填充昵称
- 回复框:输入QQ号后自动填充昵称
- 头像同步:同时自动获取QQ头像并显示
技术方案
1. 接口选择
经过多个接口的测试对比,最终选择了稳定可用的 uapis.cn 接口:
https://uapis.cn/api/v1/social/qq/userinfo?qq={QQ号码}
返回格式示例:
{
"qq": "1565453341",
"nickname": "召田最帅boy",
"long_nick": "知不足而奋进,望远山而前行。",
"avatar_url": "http://q.qlogo.cn/g?b=qq&nk=1565453341&s=640",
"age": 25,
"sex": "male",
"qid": "wzryxxsyx6",
"qq_level": 88,
"location": "中国 湖南 衡阳",
"email": "xf-zou@qq.com"
}
2. 核心代码实现
2.1 获取QQ昵称函数
// 获取QQ昵称并填入指定输入框
function fetchQQNickname(qq, targetSelector) {
if (!qq || !/^\d{5,11}$/.test(qq)) {
return;
}
$.ajax({
url: `https://uapis.cn/api/v1/social/qq/userinfo?qq=${qq}`,
type: 'GET',
dataType: 'json',
success: function(res) {
if (res && res.nickname) {
$(targetSelector).val(res.nickname);
}
},
error: function() {
console.log('获取QQ昵称失败');
}
});
}
代码说明:
- 使用正则表达式验证QQ号格式(5-11位数字)
- 通过jQuery的
$.ajax发送异步请求 - 成功获取昵称后自动填入目标输入框
- 失败时仅在控制台输出日志,不影响用户操作
2.2 主评论表单集成
$('#QQ').blur(function () {
var QQ = $("#QQ").val().trim();
setAvatarAndEmail(QQ);
if (QQ) {
fetchQQNickname(QQ, '#nickname');
}
});
触发时机:用户在QQ输入框(#QQ)失去焦点(blur事件)时触发
2.3 回复框集成
// QQ号自动获取头像和昵称
replyModal.on('blur', '.reply-qq', function () {
const QQ = $(this).val().trim();
if (QQ) {
replyModal.find('.ui.mini.circular.image').attr(
'src',
`https://q1.qlogo.cn/g?b=qq&nk=${QQ}&s=100`
).css('transition', 'transform 0.3s ease');
// 自动获取昵称
fetchQQNickname(QQ, replyModal.find('.reply-nickname'));
}
});
触发时机:用户在回复框的QQ输入框(.reply-qq)失去焦点时触发
3. 应用页面
该功能已集成到以下两个页面:
| 页面 | 文件路径 |
|---|---|
| 友情链接/留言板 | src/main/resources/templates/themes/pinghsu/links.html |
| 文章详情页 | src/main/resources/templates/themes/pinghsu/post.html |
接口测试历程
在开发过程中,我们测试了多个QQ信息查询接口,遇到了各种稳定性问题:
| 接口地址 | 状态 | 备注 |
|---|---|---|
https://api.qjqq.cn/api/qqinfo |
❌ 504 Gateway Timeout | 服务不稳定 |
https://api.oioweb.cn/api/qq/info |
❌ 404 Not Found | 接口已下线 |
https://api.lixingyong.com/api/qq |
⚠️ 部分QQ号500错误 | 部分号码查询失败 |
https://apis.kit9.cn/api/qq_member/api.php |
⚠️ 可用但信息有限 | 仅返回基础信息 |
https://uapis.cn/api/v1/social/qq/userinfo |
✅ 稳定可用 | 信息丰富,最终选用 |
安全性考虑
- 前端验证:使用正则表达式验证QQ号格式,避免无效请求
- 异步请求:使用AJAX异步获取数据,不阻塞页面交互
- 错误处理:接口调用失败时不影响用户正常填写,仅控制台输出日志
- 跨域支持:选用的API接口支持CORS跨域请求
优化建议
- 缓存机制:可以考虑将获取到的QQ信息缓存到LocalStorage,避免重复请求
- 加载状态:添加加载动画提示用户正在获取信息
- 备用接口:配置多个备用接口,当主接口不可用时自动切换
- 后端代理:考虑通过后端服务器转发请求,避免前端直接暴露第三方接口
总结
通过集成QQ号自动获取昵称功能,我们有效简化了用户的评论操作流程,提升了用户体验。该功能实现简单、效果显著,是博客系统用户体验优化的一个典型案例。

。。。。