首先在QQ互聯: https://connect.qq.com/manage.html 申請賬號,並且進行資料審核,同時創建應用(設置回調地址)

申請應用完后,會有app_ID、app_KEY等參數
官方JAVA SDK demo下載:https://pan.xunlew.com/s86815
官方文檔:https://wiki.connect.qq.com/%E5%87%86%E5%A4%87%E5%B7%A5%E4%BD%9C_oauth2-0
引入jar包 Sdk4J.jar
或者maven
<dependency>
<groupId>net.gplatform</groupId>
<artifactId>Sdk4J</artifactId>
<version>2.0</version>
</dependency>
把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("<a href=" + "/shuoshuoDemo.html" + " target=\"_blank\">去看看發表說說的demo吧</a>");
// 利用獲取到的accessToken 去獲取當前用戶的openid --------- end
out.println("<p> start -----------------------------------利用獲取到的accessToken,openid 去獲取用戶在Qzone的昵稱等信息 ---------------------------- start </p>");
UserInfo qzoneUserInfo = new UserInfo(accessToken, openID);
UserInfoBean userInfoBean = qzoneUserInfo.getUserInfo();
out.println("<br/>");
if (userInfoBean.getRet() == 0) {
out.println(userInfoBean.getNickname() + "<br/>");
out.println(userInfoBean.getGender() + "<br/>");
out.println("<image src=" + userInfoBean.getAvatar().getAvatarURL30() + "/><br/>");
out.println("<image src=" + userInfoBean.getAvatar().getAvatarURL50() + "/><br/>");
out.println("<image src=" + userInfoBean.getAvatar().getAvatarURL100() + "/><br/>");
} else {
out.println("很抱歉,我們沒能正確獲取到您的信息,原因是: " + userInfoBean.getMsg());
}
out.println("<p> end -----------------------------------利用獲取到的accessToken,openid 去獲取用戶在Qzone的昵稱等信息 ---------------------------- end </p>");
}
} catch (Exception e) {
}
}
