First, QQ Internet: https://connect.qq.com/manage.html application account information and conduct audits, while creating an application (set callback address)
After applying the application, there will be app_ID, app_KEY parameters
Official JAVA SDK demo download: https://pan.xunlew.com/s86815
The official document: https://wiki.connect.qq.com/%E5%87%86%E5%A4%87%E5%B7%A5%E4%BD%9C_oauth2-0
The introduction of the jar package Sdk4J.jar
Or maven
<dependency> <groupId>net.gplatform</groupId> <artifactId>Sdk4J</artifactId> <version>2.0</version> </dependency>
The qqconnectconfig.properties placed in the resource directory project
Configure three parameters
Click QQ Jump request third-party code behind (the official demo code)
/** * 第三方登录 授权 * * @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) { } }