QQ第三方登录

时间:2022-01-04 13:17:36

场景:注册页面显示一个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 读取,我们开发人员不需要管;

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