生活不易、且行且珍惜。网站首页 程序人生
网站接入第三方登录功能:Java开发QQ登录
发布时间:2018-11-07 17:00编辑:zj 阅读:文章分类:
Java互动QQ群:170915747
QQ登录确实比自己注册账户登录要方便的多,所以就搞了个QQ登录。QQ互联开放平台为第三方网站提供了丰富的API。第三方网站接入QQ互联开放平台后,即可通过调用平台提供的API实现用户使用QQ帐号登录网站功能,且可以获取到腾讯QQ用户的相关信息。
准备工作
首先得去QQ开放平台注册个账号https://connect.qq.com/index.html
申请为开发者,需要审核,审核通过后创建网站应用,也要审核。 根据要求填好资料提交审核就OK。
创建好后会得到APPID和APP key。创建应用时填写的回调地址很重要(回调地址可以改的,方便测试),是在QQ登录后执行的。
java SDK下载http://qzonestyle.gtimg.cn/qzone/vas/opensns/res/doc/qqConnect_Server_SDK_java_v2.0.zip
下载完后把Sdk4J.jar导入到项目中,还有qqconnectconfig.properties放到资源文件中。
qqconnectconfig.properties需要修改一些内容。
然后就是代码了。因为比较简单,就贴一下吧。
前端,通过a标签来登录。
<a class="qq" href="<%=path%>/qqLogin"><img alt="QQ登录" title="QQ登录" src="img/QQ.png"></a>
点击QQ登录,然后就是执行qqLogin,
Controller代码
/** * QQ登录 */ @RequestMapping("/qqLogin") public void qqLogin(HttpServletRequest request, HttpServletResponse response) { try { response.setContentType("text/html;charset=utf-8"); response.sendRedirect(new Oauth().getAuthorizeURL(request)); } catch (QQConnectException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }
弹出QQ登录点击登录后执行回调方法。就是创建应用时填的
/** * 登录回调 */ @RequestMapping("回调路由") public String qqCallBack(HttpSession session, HttpServletRequest request, HttpServletResponse response) { response.setContentType("text/html;charset=utf-8"); try { AccessToken accessTokenObj = (new Oauth()).getAccessTokenByRequest(request); String accessToken = null, openID = null; long tokenExpireIn = 0L; if (accessTokenObj.getAccessToken().equals("")) { return "404"; } accessToken = accessTokenObj.getAccessToken(); tokenExpireIn = accessTokenObj.getExpireIn(); // 利用获取到的accessToken 去获取当前用的openid OpenID openIDObj = new OpenID(accessToken); openID = openIDObj.getUserOpenID(); String icon = null, nickName = null, sex = null; // 去获取用户在Qzone的昵称等信息 com.qq.connect.api.qzone.UserInfo qzoneUserInfo = new com.qq.connect.api.qzone.UserInfo(accessToken, openID); UserInfoBean userInfoBean = qzoneUserInfo.getUserInfo(); if (userInfoBean.getRet() == 0) { nickName = userInfoBean.getNickname(); sex = userInfoBean.getGender(); if (userInfoBean.getAvatar().getAvatarURL100() == null) { icon = userInfoBean.getAvatar().getAvatarURL50(); } icon = userInfoBean.getAvatar().getAvatarURL100(); // userInfoBean.getAvatar().getAvatarURL50(); // userInfoBean.getAvatar().getAvatarURL100(); } // 自己网站的用户实体类,根据openId查询是否已存在 UserInfo userInfo = new UserInfo(); userInfo.setOpenId(openID); UserInfo localUser = userInfoService.selectByOpenId(userInfo); if (localUser != null) { // 老用户处理 //你需要的业务操作 } else { // 新用户处理 UserInfo userInfos = new UserInfo(); userInfos.setUserId(Tools.getUniqueId()); userInfos.setUserName(nickName); userInfos.setSex(sex); userInfoService.save(userInfos); //你需要的业务操作 } } catch (QQConnectException e) { e.printStackTrace(); } return "redirect:/index"; }
一个简单的QQ登录功能就完成了。
#去评论一下
标签:#QQ登录
版权声明:本博客的所有原创内容皆为作品作者所有
转载请注明:来自ZJBLOG 链接:www.zjhuiwan.cn


「万物皆有时,比如你我相遇」
感谢大佬打赏【请选择支付宝或微信,再选择金额】
使用微信扫描二维码完成支付
