1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
| @Controller public class LoginController {
@RequestMapping("/") public String login(){ return "login"; }
@RequestMapping("/loginByQQ") public void loginByQQ(HttpServletRequest request, HttpServletResponse response) { response.setContentType("text/html;charset=utf-8"); try { response.sendRedirect(new Oauth().getAuthorizeURL(request)); System.out.println("请求QQ登录,开始跳转..."); } catch (QQConnectException | IOException e) { e.printStackTrace(); } }
@RequestMapping("/connection") public String connection(HttpServletRequest request, HttpServletResponse response, Map<String,Object> map) { try { AccessToken accessTokenObj = (new Oauth()).getAccessTokenByRequest(request); String accessToken = null, openID = null; long tokenExpireIn = 0L; if ("".equals(accessTokenObj.getAccessToken())) { System.out.println("登录失败:没有获取到响应参数"); return "accessTokenObj=>" + accessTokenObj + "; accessToken" + accessTokenObj.getAccessToken(); } else { accessToken = accessTokenObj.getAccessToken(); tokenExpireIn = accessTokenObj.getExpireIn(); System.out.println("accessToken" + accessToken); request.getSession().setAttribute("demo_access_token", accessToken); request.getSession().setAttribute("demo_token_expirein", String.valueOf(tokenExpireIn));
OpenID openIDObj = new OpenID(accessToken); openID = openIDObj.getUserOpenID();
UserInfo qzoneUserInfo = new UserInfo(accessToken, openID); UserInfoBean userInfoBean = qzoneUserInfo.getUserInfo(); if (userInfoBean.getRet() == 0) { String name = removeNonBmpUnicode(userInfoBean.getNickname()); String imgUrl = userInfoBean.getAvatar().getAvatarURL100(); map.put("openId",openID); map.put("name",name); map.put("imgUrl",imgUrl); } else { System.out.println("很抱歉,我们没能正确获取到您的信息,原因是:" + userInfoBean.getMsg()); } } } catch (QQConnectException e) { e.printStackTrace(); } return "index"; }
public String removeNonBmpUnicode(String str) { if (str == null) { return null; } str = str.replaceAll("[^\\u0000-\\uFFFF]", ""); if ("".equals(str)) { str = "(* _ *)"; } return str; } }
|