QQ登录授权
web开发:QQ授权登录获取用户信息功能过程中,也出现过一定的问题,比如通过腾讯客服了解到,虽然腾讯开放平台和QQ互联平台资料互通,但是开发QQ接入获取用户信息功能还是需要在QQ互联平台进行申请注册,现总结如下:
Step1:在QQ互联平台称为开发者,创建web应用,经1-2个工作日即可审核通过
![]() |
![]() |
Step2:查看文档
http://wiki.connect.qq.com/%E7%BD%91%E7%AB%99%E5%BA%94%E7%94%A8%E6%8E%A5%E5%85%A5%E6%B5%81%E7%A8%8B
Step3:具体过程





Step4:Java代码,http请求使用了okHttp3
/**
* @author makex
* @note QQ 三方授权登录
* @create 2017-04-11
*/
@Controller
@RequestMapping("/api/qq/*")
public class QQLinkController {
@RequestMapping("auth")
public void QQAuth(HttpServletResponse response) {
//第一步,重定向索要code
try {
System.out.println("重定向索要code:" + "https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id=" + Constant.APPID + "&redirect_uri=" + Constant.REDIREC_URL + "&state=" + Constant.STATE);
response.sendRedirect("https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id=" + Constant.APPID + "&redirect_uri=" + Constant.REDIREC_URL+ "&state=" + Constant.STATE);
} catch (IOException e) {
e.printStackTrace();
}
}
@RequestMapping("token")
public void QQToken(HttpServletRequest request, HttpServletResponse response) {
String code = request.getParameter("code");
String state = request.getParameter("state");
if (Constant.STATE.equals(state)) {
try {
//第二步,携带code,索要token
String result = TulingUtils.httpGetForResult("https://graph.qq.com/oauth2.0/token?grant_type=authorization_code&client_id=" + Constant.APPID + "&client_secret=" + Constant.APPSECRETE + "&redirect_uri=" + Constant.REDIREC_URL + "&code=" + code);
System.out.println(result);
String accessToken = result.split("&")[0].substring(13);
System.out.println("accessToken:"+accessToken);
//第三步,携带token,索要openId
result = TulingUtils.httpGetForResult("https://graph.qq.com/oauth2.0/me?access_token=" + accessToken);
System.out.println("result:"+result);
JSONObject objCallback = JSONObject.parseObject(result.substring(result.indexOf("{"),result.indexOf("}")+1));
String openId = objCallback.getString("openid");
System.out.println("openid:"+openId);
//第四步,获取用户信息
String userInfo = TulingUtils.httpGetForResult("https://graph.qq.com/user/get_user_info?access_token=" + accessToken + "&oauth_consumer_key=" + Constant.APPID + "&openid=" + openId);
JSONObject obj = JSONObject.parseObject(userInfo);
System.out.println(userInfo);
System.out.println(obj.getString("nickname"));
System.out.println(obj.getString("figureurl"));
} catch (Exception e) {
e.printStackTrace();
}
} else {
try {
response.sendRedirect("http://wwww.baidu.com/");
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
http://www.cnblogs.com/makexu/



浙公网安备 33010602011771号