26 06 2019

通过QQ号获取用户信息其实是用的腾讯的一个接口,看下效果图




接口介绍

接口url:http://users.qzone.qq.com/fcg-bin/cgi_get_portrait.fcg

请求方式:get

请求参数:uins,uins其实就是QQ号,由于是get请求,参数加在url后面就行了

编码格式:GBK,编码格式请一个要选择GBK不然会乱码


代码

/**
     * 通过QQ获取信息
* @param qq
* @return
*/
@GetMapping("/qq/{qq}")
@ResponseBody
public JsonUtil qq(@PathVariable("qq") String qq) {
if (StringUtils.isEmpty(qq)) {
return JsonUtil.error("QQ号不能为空");
}
Map<String, String> resultMap = new HashMap<>(4);
String nickname = "匿名";
String url = "http://users.qzone.qq.com/fcg-bin/cgi_get_portrait.fcg?uins=" + qq;
HttpClentEntity entity=new HttpClentEntity.HttpClentBuilder(url,"GBK").build();
try {
String json = HttpClent2.sendGet(entity);
if (!StringUtils.isEmpty(json)) {
json = json.replaceAll("portraitCallBack|\\\\s*|\\t|\\r|\\n", "");
json = json.substring(1, json.length() - 1);
log.info(json);
JSONObject object = JSONObject.parseObject(json);
JSONArray array = object.getJSONArray(qq);
nickname = array.getString(6);
}
} catch (Exception e) {
log.error("通过QQ号获取用户昵称发生异常", e);
}
resultMap.put("avatar", "https://q1.qlogo.cn/g?b=qq&nk=" + qq + "&s=40");
resultMap.put("nickname", nickname);
resultMap.put("email", qq + "@qq.com");
resultMap.put("url", "https://user.qzone.qq.com/" + qq);
return JsonUtil.sucess(JSON.toJSONString(resultMap));
}


大家把图中的两行红色代码自行用rpc调用框架发送请求就可以通过QQ得到信息了,我这里用的是httpclent。


通过代码可以看出,头像、邮箱、空间地址是通过各种规则出来的,这个请求的主要作用就是获取QQ用户的昵称


如果文章对你有用请评论或点个赞,顶上去让更多人看到,少踩坑,谢谢(疯狂暗示)  

延伸阅读
  1. 使用echarts折线图遇到的问题
  2. TCP的三次握手与四次挥手(详解+动图)
发表评论