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号
浙公网安备 33010602011771号