Java web 集成使用QQ互联

Java web 集成使用QQ互联

前言

自己模仿京东写一个电商项目,中间有一个功能是使用QQ快捷登录,这样确实方便用户使用。
在这里插入图片描述
在这里插入图片描述

流程讲解

流程大致如下:

  1. 用户访问登陆页面,使用qq快捷登录,此时会跳转到qq登陆页面。
  2. 用户输入qq号和密码,点击登录。
  3. 如果账号密码正确就会跳转到自定义的回调接口。
  4. 在回调接口中进行用户查询,如果该用户存在,就直接登录成功,如果不存在,就让用户先注册。

在这里插入图片描述

准备工作

  1. 创建maven项目
  2. 拥有一个已经备案的网站

申请QQ互联

qq互联网官网
大致流程分为 接入和创建应用。

接入个人开发者

进入官网后,点击应用管理

在这里插入图片描述

此时,如果是第一次使用QQ互联,应该显示类似

在这里插入图片描述

点击头像,进行个人开发者接入,填写完成后等待审核。

在这里插入图片描述

审核成功后:

在这里插入图片描述

创建应用

在应用管理的页面,根据自己需要创建应用。因为我是web开发,所以就选择创建网站应用。

在这里插入图片描述

由于我之前有账号创建了,就不再新建,给你看结果。如果新建的应用一般要花上几天进行审核。

在这里插入图片描述

应用接入

  1. 引入依赖
  2. 创建配置文件
  3. 创建接口(登录接口/登录成功回调接口)

依赖引入

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次,说多了都是泪。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值