QQ第三方登录
Posted 戴眼镜的蚂蚁
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 读取,我们开发人员不需要管;
是不是很简单;我是第一次弄,所以也花了几个小时
以上是关于QQ第三方登录的主要内容,如果未能解决你的问题,请参考以下文章
基于Thinkphp3.2的qq第三方oauth认证登录扩展类