1、在qq互联中心注册
地址https://connect.qq.com/manage.html#/
只需要红框里面审核通过就行,创建的应用即使不通过本地测试足够了。
2、点击创建应用,完成信息
3、导入sdk的jar包,这个在互联中心的文档资料里面找,加入到lib包中就OK
4、配置qqconnectconfig.properties,这个也是在文档资料里面的,找一下就能找到
把你的id 和 key 输入,回调地址写成自己的回调地址,还有一点,红框内scope这行很长,拉到最后边,最后有一个(此处可以修改)要把这个给删掉,我就是因为这行太长没看见,搞的我弄了一上午都一直调不了回调地址。
5.控制层
@Controller
@RequestMapping("/qq")public class QQlogin {
/**
* @Title: qqlogin
* @Description: qq登录
* @param request
* @param response
* @throws Exception
* @return: void
*/
@RequestMapping(value="/qqlogin")
public void qqlogin(HttpServletRequest request,HttpServletResponse response) throws Exception{
//设置相应编码
//System.out.println("111");测试使用的
response.setContentType("text/html;charset=utf-8");
try {
//跳转到qq第三方登录界面
response.sendRedirect(new Oauth().getAuthorizeURL(request));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* @Title: qqSuccess
* @Description: 回调函数
* @param request
* @param response
* @param model
* @return
* @throws IOException
* @throws ParseException
* @throws QQConnectException
* @return: String
*/
@RequestMapping(value="/afterQQLogin",method=RequestMethod.GET)
public String qqSuccess(HttpServletRequest request,
HttpServletResponse response,
Model model) throws IOException,ParseException,QQConnectException{
//设置编码格式
response.setContentType("text/html;charset=utf-8");
//默认token,openid
String accessToken=null;
String openID=null;
String qqname=null;//qq昵称
String gender = null;//性别
String msg = null;//异常,用于判定openID时使用,如果说openID是空,那么就使用这个addattribute(“msg”,"错误")
String url50 = null;//接收头像所在地址,然后在前台使用《img》进行接收
try {
AccessToken accessTokenObj = (new Oauth()).getAccessTokenByRequest(request);
//进行判断
if (accessTokenObj.getAccessToken().equals("")) {
System.out.println("没有获取到相应参数");
}else {
accessToken = accessTokenObj.getAccessToken();
//利用获取的accessTokenm,去获取当前的openID
OpenID openIDObj = new OpenID(accessToken);
openID = openIDObj.getUserOpenID();
}
} catch (QQConnectException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("产生异常的原因是:"+e.getMessage());
}
if (openID==null) {
request.setAttribute("msg", "没有参数哈哈哈哈");
return "qq/qqerror";//发生错误直通错误jsp页面
}else {
//获得空间个人实例对象
UserInfo qzoneUserInfo = new UserInfo(accessToken, openID);
System.out.println("空间:"+qzoneUserInfo);
UserInfoBean userInfoBean = qzoneUserInfo.getUserInfo();
//获取qq名称
qqname = userInfoBean.getNickname();
//获取性别
gender = userInfoBean.getGender();
//msg = userInfoBean.getMsg();
//获取图片
url50 = userInfoBean.getAvatar().getAvatarURL50();
}
model.addAttribute("openID", openID);
model.addAttribute("qqname", qqname);
model.addAttribute("gender", gender);
//model.addAttribute("msg", msg);
model.addAttribute("url50", url50);
return "qq/qqlogin";
}
}
6、前台页面展示部分,写的比较简陋,大家凑合着看喽
qq/qqlogin.jsp
<body>
登录成功<br>
<div style="float: right;">
欢迎 !!! <h5>${qqname }</h5> <img alt="" src="${url50 }"><br>
性别:${gender }<br>
</div>
<div>
openID:${openID }<br>
url50:${url50 }<br>
</div>
</body>
弄成功的小伙伴不妨给我点个赞呗233333