Java web 集成使用QQ互联
前言
自己模仿京东写一个电商项目,中间有一个功能是使用QQ快捷登录,这样确实方便用户使用。
流程讲解
流程大致如下:
- 用户访问登陆页面,使用qq快捷登录,此时会跳转到qq登陆页面。
- 用户输入qq号和密码,点击登录。
- 如果账号密码正确就会跳转到自定义的回调接口。
- 在回调接口中进行用户查询,如果该用户存在,就直接登录成功,如果不存在,就让用户先注册。
准备工作
- 创建maven项目
- 拥有一个已经备案的网站
申请QQ互联
qq互联网官网
大致流程分为 接入和创建应用。
接入个人开发者
进入官网后,点击应用管理
此时,如果是第一次使用QQ互联,应该显示类似
点击头像,进行个人开发者接入,填写完成后等待审核。
审核成功后:
创建应用
在应用管理的页面,根据自己需要创建应用。因为我是web开发,所以就选择创建网站应用。
由于我之前有账号创建了,就不再新建,给你看结果。如果新建的应用一般要花上几天进行审核。
应用接入
- 引入依赖
- 创建配置文件
- 创建接口(登录接口/登录成功回调接口)
依赖引入
Maven 依赖引入
<!-- https://mvnrepository.com/artifact/net.gplatform/Sdk4J -->
<dependency>
<groupId>net.gplatform</groupId>
<artifactId>Sdk4J</artifactId>
<version>2.0</version>
</dependency>
我当时网上查资料时,是模仿别人使用 本地jar,如果有发现maven引入坐标后不行请品论区留言,我将本地引 jar补上。
创建配置文件
在resources目录下创建qqconnectconfig.properties
文件
app_ID ,app_KEY ,redirect_URI 这三个在应用管理中获取。
# 狗东
app_ID = your AppId
app_KEY = your app_KEY
redirect_URI = your redirect_URI
scope = get_user_info
baseURL = https://graph.qq.com/
getUserInfoURL = https://graph.qq.com/user/get_user_info
accessTokenURL = https://graph.qq.com/oauth2.0/token
authorizeURL = https://graph.qq.com/oauth2.0/authorize
getOpenIDURL = https://graph.qq.com/oauth2.0/me
addTopicURL = https://graph.qq.com/shuoshuo/add_topic
addBlogURL = https://graph.qq.com/blog/add_one_blog
addAlbumURL = https://graph.qq.com/photo/add_album
uploadPicURL = https://graph.qq.com/photo/upload_pic
listAlbumURL = https://graph.qq.com/photo/list_album
addShareURL = https://graph.qq.com/share/add_share
checkPageFansURL = https://graph.qq.com/user/check_page_fans
addTURL = https://graph.qq.com/t/add_t
addPicTURL = https://graph.qq.com/t/add_pic_t
delTURL = https://graph.qq.com/t/del_t
getWeiboUserInfoURL = https://graph.qq.com/user/get_info
getWeiboOtherUserInfoURL = https://graph.qq.com/user/get_other_info
getFansListURL = https://graph.qq.com/relation/get_fanslist
getIdolsListURL = https://graph.qq.com/relation/get_idollist
addIdolURL = https://graph.qq.com/relation/add_idol
delIdolURL = https://graph.qq.com/relation/del_idol
getTenpayAddrURL = https://graph.qq.com/cft_info/get_tenpay_addr
getRepostListURL = https://graph.qq.com/t/get_repost_list
version = 2.0.0.0
创建接口
创建登录接口
该接口的作用就是重定向qq快速登录界面,并携带上重要配置参数(符合Oauth2协议)。
@ApiOperation(value = "QQ互联登录", notes = "")
@GetMapping("/login")
public void login (HttpServletRequest request, HttpServletResponse response) throws QQConnectException, IOException {
response.sendRedirect(new Oauth().getAuthorizeURL(request));
}
浏览器访问 该接口,会重定向qq互联页面:
登录成功回调接口
下面使用了伪代码,有一部分逻辑需要自己实现,比如根据openId查询用户信息,根据信息存不存在,跳转到注册页面或是主页面(用户免登录)。
/**
* QQ登录成功后的回调接口,跳转页面
* @param request
* @param response
* @throws QQConnectException
* @throws IOException
*/
@ApiOperation(value = "QQ登录回调", notes = "QQ登录成功后,QQ互联的回调地址")
@GetMapping("/fallback")
public void fallback(HttpServletRequest request, HttpServletResponse response) throws QQConnectException, IOException {
AccessToken accessTokenObj = (new Oauth()).getAccessTokenByRequest(request);
String accessToken = null, openID = null;
long tokenExpireIn = 0L;
if (StringUtils.isEmpty(accessTokenObj.getAccessToken())) {
log.error("没有获取到响应参数");
}else{
accessToken = accessTokenObj.getAccessToken();
tokenExpireIn = accessTokenObj.getExpireIn();
OpenID openIDObj = new OpenID(accessToken);
openID = openIDObj.getUserOpenID();
UserInfo qzoneUserInfo = new UserInfo(accessToken, openID);
// qq的基本信息,昵称,性别,头像等
UserInfoBean userInfoBean = qzoneUserInfo.getUserInfo();
// 根据openId查询用户数据库
// openId未使用,可以绑定
if (true) {
// 重定向首页,并自动登录
} else {
// 重定向首页,并自动登录
}
}
}
结语
使用第三方的东西,大多都需要审核,而且审核的时间也不固定,所以太多时间都是花在提交审核上,例如我之前使用阿里云短信审核,提交了n次,说多了都是泪。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/78259.html