首先在QQ互联: https://connect.qq.com/manage.html 申请账号,并且进行资料审核,同时创建应用(设置回调地址)
申请应用完后,会有app_ID、app_KEY等参数
引入jar包 Sdk4J.jar
或者maven
net.gplatform
Sdk4J
2.0
把qqconnectconfig.properties 放在项目资源目录下
配置三个参数
点击QQ跳转第三方请求后台代码(官方demo代码)
/**
* 第三方登录 授权
*
* @return
*/
@RequestMapping(value = "/to_qq")
public void toLogin(HttpServletRequest request, HttpServletResponse response) {
response.setContentType("text/html;charset=utf-8");
try {
response.sendRedirect(new Oauth().getAuthorizeURL(request));
} catch (Exception e) {
e.printStackTrace();
}
}
回调地址代码(官方demo代码)
@RequestMapping(value = "/to_third_login/callback")
public void loginBack(HttpServletRequest request, HttpServletResponse response) {
response.setContentType("text/html; charset=utf-8");
try {
PrintWriter out = response.getWriter();
AccessToken accessTokenObj = (new Oauth()).getAccessTokenByRequest(request);
String accessToken = null,
openID = null;
long tokenExpireIn = 0L;
if (accessTokenObj.getAccessToken().equals("")) {
// 我们的网站被CSRF攻击了或者用户取消了授权
// 做一些数据统计工作
System.out.print("没有获取到响应参数");
} else {
accessToken = accessTokenObj.getAccessToken();
tokenExpireIn = accessTokenObj.getExpireIn();
request.getSession().setAttribute("demo_access_token", accessToken);
request.getSession().setAttribute("demo_token_expirein", String.valueOf(tokenExpireIn));
// 利用获取到的accessToken 去获取当前用的openid -------- start
OpenID openIDObj = new OpenID(accessToken);
openID = openIDObj.getUserOpenID();
out.println("欢迎你,代号为 " + openID + " 的用户!");
request.getSession().setAttribute("demo_openid", openID);
out.println("去看看发表说说的demo吧");
// 利用获取到的accessToken 去获取当前用户的openid --------- end
out.println("
start -----------------------------------利用获取到的accessToken,openid 去获取用户在Qzone的昵称等信息 ---------------------------- start
");UserInfo qzoneUserInfo = new UserInfo(accessToken, openID);
UserInfoBean userInfoBean = qzoneUserInfo.getUserInfo();
out.println("
");
if (userInfoBean.getRet() == 0) {
out.println(userInfoBean.getNickname() + "
");
out.println(userInfoBean.getGender() + "
");
out.println("
");
out.println("
");
out.println("
");
} else {
out.println("很抱歉,我们没能正确获取到您的信息,原因是: " + userInfoBean.getMsg());
}
out.println("
end -----------------------------------利用获取到的accessToken,openid 去获取用户在Qzone的昵称等信息 ---------------------------- end
");}
} catch (Exception e) {
}
}