一、注册成为开发者
链接:https://connect.qq.com/index.html
二、创建应用
注册成功后在 应用管理 -》网站应用 里创建自己的应用
三、获取app Id 和 app Key
四、下载并导入SDK和配置文件
下载链接:http://wiki.connect.qq.com/sdk下载
五、在配置文件中填写自己的app id 等信息
六、编写登陆和回调代码
/**
* qq登录页面
* @param request
* @param response
*/
@RequestMapping("/qqLogin")
public void qqLogin(HttpServletRequest request, HttpServletResponse response){
response.setContentType("text/html;charset=utf-8");
try {
response.sendRedirect(new Oauth().getAuthorizeURL(request));
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* qq回调页面
* @param request
* @param response
* @return
*/
@RequestMapping("/qqLoginRedirect")
public String qqRedirect(HttpServletRequest request, HttpServletResponse response){
try {
AccessToken accessTokenObj = (new Oauth()).getAccessTokenByRequest(request);
String accessToken = null;
String openID = null;
Long tokenExpireIn = 0L;
if (accessTokenObj.getAccessToken().equals("")) {
LoggerUtil.text("==========================未获取到用户 accessToken==========================");
}else{
//获取accessToken信息
accessToken = accessTokenObj.getAccessToken();
tokenExpireIn = accessTokenObj.getExpireIn();
// 利用获取到的accessToken 去获取当前用的openid
OpenID openIDObj = new OpenID(accessToken);
openID = openIDObj.getUserOpenID();
//利用 accessToken 和 openID 获取用户信息
UserInfo userInfo = new UserInfo(accessToken, openID);
UserInfoBean userInfoBean = userInfo.getUserInfo();
//第三方登录成功
if(userInfoBean.getRet() == 0){
Member member = memberService.queryMemberByToken(accessToken);
if(member==null){
member = new Member();
member.setStatus(true);
member.setToken(accessToken);
member.setNick_name(userInfoBean.getNickname());
member.setHead_img(userInfoBean.getAvatar().getAvatarURL100());
memberService.saveMember(member);
}
request.getSession().setAttribute(Common.MEMBER_SESSION, member);
request.getSession().setMaxInactiveInterval(tokenExpireIn.intValue());
}else{
LoggerUtil.text("未能正确获取到信息,原因是: " + userInfoBean.getMsg());
}
}
} catch (Exception e) {
LoggerUtil.error(e);
}
return "redirect:../../web/index";
}
七、在页面上放置qq图标
这个在上线前是没有任何要求的,可以是一个button、a 标签。 只要点击后能请求到你后台编写的 qq登陆页面 接口就行了