QQ第三方登录

场景:注册页面显示一个QQ图标,用户点击qq图标,跳转登录,用户登录后,获取到qq用户的信息,然后把信息绑定到自己的业务用户中

 

这里介绍下调用QQ第三方登录的具体步骤;

第一步:进入qq官网 申请接入: https://connect.qq.com/index.html  (QQ互联)

  注意;多个回调地址用分号隔开(;)且以 斜杠(/)结尾,如: http://www.abc.cn/wei;http://www.abc.cn/qq/auto/

第二步:审核通过后开始接入,我这里采用的是 网站应用-- OAuth2.0接入方式(登录授权),同时还有2个版本的SDK(js和java),我是做javaWeb开发的,所以采用的是javaSDk

在官网: http://wiki.connect.qq.com/sdk%E4%B8%8B%E8%BD%BD  找到Java SDK v2.0 点击下载

把下载下来的SDK解压 得到 Sdk4J.jar 导入到项目中,把得到的 qqconnectconfig.properties 配置文件放入到项目资源目录(根路径),

并修改qqconnectconfig.properties文件中的前面三个参数,都可以从申请的QQ互联 后台得到

第三步:见代码

//点击QQ图标
$('#qq').on('click', function () {
        window.location.href =ctx + "/qq";
    })
@RequestMapping(value = "/qq", method = RequestMethod.GET)
    @ResponseBody
    public void qqGetCode(HttpServletRequest request, HttpServletResponse response) {
        try {
            response.setHeader("Access-Control-Allow-Origin","*");
            response.sendRedirect(new Oauth().getAuthorizeURL(request));//请求qq互联网页授权,回调域名地址请求
        } catch (IOException e) {
            e.printStackTrace();
        } catch (QQConnectException e) {
            e.printStackTrace();
        }
    }
//注意 这个请求/qq/auto/就是申请QQ互联时候的回调地址(排除域名前缀)
@RequestMapping(value = "/qq/auto/")
    @ResponseBody
    public ModelAndView thirdPartyQQ(HttpServletRequest request) {

        try {
            AccessToken accessTokenObj = (new Oauth()).getAccessTokenByRequest(request);

            String accessToken   = null,
                    openID        = null;
            if (accessTokenObj.getAccessToken().equals("")) {
                System.out.print("没有获取到响应参数");
            } else {
                accessToken = accessTokenObj.getAccessToken();
                // 利用获取到的accessToken 去获取当前用的openid -------- start
                OpenID openIDObj =  new OpenID(accessToken);
                openID = openIDObj.getUserOpenID();
                com.qq.connect.api.qzone.UserInfo qzoneUserInfo = new com.qq.connect.api.qzone.UserInfo(accessToken, openID);
                UserInfoBean userInfoBean = qzoneUserInfo.getUserInfo();
                //这个userInfoBean就是qq返回过来的用户信息,有openid,昵称,头像,
          //赋值到自己的业务逻辑里面……进行处理
          return new ModelAndView("redirect:/"); // 利用获取到的accessToken 去获取当前用户的openid --------- end } } catch (QQConnectException e) { e.printStackTrace(); } return new ModelAndView("redirect:/user/login"); }

 

备注:这个qqconnectconfig.properties配置文件是官方jar 读取,我们开发人员不需要管;

是不是很简单;我是第一次弄,所以也花了几个小时

 

posted @ 2017-05-25 17:48  戴眼镜的蚂蚁  阅读(1359)  评论(0编辑  收藏  举报