sprignboot整合qq第三方登陆

weblog 959 0 0

部分代码

    /**
     * QQ回调
     * @param request
     * @return
     */
    @GetMapping("/qq/callback")
    public String qqcallback(HttpServletRequest request){
        try {
			HttpSession session = request.getSession();
			String code = request.getParameter("code");
			String state = request.getParameter("state");
			String uuid = (String) session.getAttribute("state");
 
			if(uuid != null){
			    if(!uuid.equals(state)){
			    	return "error";
			    }
			}
			//Step2:通过Authorization Code获取Access Token
			String backUrl = http + "/qq/callback";
			String url = "https://graph.qq.com/oauth2.0/token?grant_type=authorization_code"+
			        "&client_id=" + QQHttpClient.APPID +
			        "&client_secret=" + QQHttpClient.APPKEY +
			        "&code=" + code +
			        "&redirect_uri=" + backUrl;
			String access_token = QQHttpClient.getAccessToken(url);
			//Step3: 获取回调后的 openid 值
			url = "https://graph.qq.com/oauth2.0/me?access_token=" + access_token;
			String openid = QQHttpClient.getOpenID(url);
 
			//Step4:获取QQ用户信息
			url = "https://graph.qq.com/user/get_user_info?access_token=" + access_token +
			        "&oauth_consumer_key="+ QQHttpClient.APPID +
			        "&openid=" + openid;
			JSONObject jsonObject = QQHttpClient.getUserInfo(url);
			//也可以放到Redis和mysql中
			session.setAttribute("openid",openid);  //openid,用来唯一标识qq用户
			session.setAttribute("nickname",(String)jsonObject.get("nickname")); //QQ名
			session.setAttribute("figureurl_qq_2",(String)jsonObject.get("figureurl_qq_2")); //大小为100*100像素的QQ头像URL
			System.out.println(jsonObject.toJSONString());
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			System.out.println("--------------error");
		}
        return "redirect:/home";
    }
猜你喜欢
算法基础 2109 在插件项目中创建一个文件夹,存放依赖的jar包,将需要引用的jar包拷贝到此目录右键选择AddasLibrary选项添加到项目构建环境中,此时就可以用jar包的类了。注意:如果你导入了
框架 2346 在springboot视图层,官推荐使用thymeleaf。thymeleaf只是渲染html的一种式,是一种模板。一步创建一个maven项目二步:修改Jdk版本,添加thymeleaf
前端(h5) 4905 layui管理端session过期正确的姿势页面跑到了iframe里边解决在页面加入如下jsif(window!=top){top.location.href=location.href;};
框架 6678 1.拦截器packagecom.dzqc.yx.interceptor;importorg.springframework.web.servlet.HandlerInterceptor
框架 2563 springbootmybatis1.创建maven项目2.sql文件SETNAMESutf8mb4;SETFOREIGN_KEY_CHECKS=0
official 662 [TOC]一、pom文件?xmlversion="1.0"encoding="UTF-8"?projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
框架 2671 1.配置springboot支持websocketpackagecom.example.demo.websocket;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importorg.springframework.web.so
spring/springmvc 1538 springmvc+mybatisshiro权限1.需要的jar包propertiesshiro.version1.3.2/shiro.version/propertiesdependency
目录