QQ互联登陆(Java)

一、准备部分

1、账户注册

腾讯开放平台网址: https://connect.qq.com/index.html

首先需要到开放平台注册QQ互联开发者身份。注册之后创建一个网站应用,注意,需要备案成功的域名才可申请。

2、应用审核

审核通过后如下图所示,审核通过后可以得到 appid 和 appkey,用于开发中使用。

二、实现思路

相信大家都用过QQ登陆第三方网站,但是在开发之前我们需要先了解一下QQ互联的开发流程:

  1. 生成QQ授权链接
  2. 获取授权码,使用授权码获取用户的openid
  3. 使用openid可以查询到用户信息

openid作用:相当于QQ用户的 userid,身份唯一标识。

看完这三步是不是觉得很熟悉?没错,跟微信一个路子,毕竟都是 OAuth协议嘛。如果还不是特别清楚的小伙伴可以去看官方文档:腾讯开放平台文档 —http://wiki.connect.qq.com/

为了方便开发,我们再整理一下代码实现思路:

  1. 编写授权链接接口
  2. 编写授权回调接口,拿到用户openid
    -- 获取到授权码;
    -- 使用授权码获取accessToken;
    -- 使用accessToken获取用户openid。
  3. 使用openid查询数据库user信息表中是否有关联
    -- 如果使用openid能够查询用户信息,说明用户已经绑定成功,自动实现登陆;’
    -- 如果使用openid没有查询到用户信息的话,说明用户没有绑定账信息,跳转到关联账号页面;
    -- 关联成功账号之后,将openid修改为对应的账号信息。

三、代码部分

1、引入sdk

QQ互连提供了用户开发的SDK,下载链接: https://files.cnblogs.com/files/niceyoo/Sdk4J.zip

由于我们的项目大部分都是 maven 管理的,但提供的是个 jar 文件,所以我们可以打入本地 maven 中:

mvn install:install-file -Dfile=jar包的位置(参数一) -DgroupId=groupId(参数二) 
-DartifactId=artifactId(参数三) -Dversion=version(参数四) -Dpackaging=jar


mvn install:install-file -Dfile="F:\Sdk4J.jar" -DgroupId=com.tengxun 
-DartifactId=sdk4j  -Dversion=1.0 -Dpackaging=jar

项目中引入依赖:

<dependency>
    <groupId>com.tengxun</groupId>
    <artifactId>sdk4j</artifactId>
    <version>1.0</version>
</dependency>

项目中引入配置文件

app_ID = APP_ID
app_KEY = APP_KEY
redirect_URI = 回调地址
scope = get_user_info,add_topic,add_one_blog,add_album,upload_pic,list_album,add_share,check_page_fans,add_t,add_pic_t,del_t,get_repost_list,get_info,get_other_info,get_fanslist,get_idollist,add_idol,del_ido,get_tenpay_addr
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
2、生成QQ联合登陆授权链接
https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id=[YOUR_APPID]&redirect_uri=[YOUR_REDIRECT_URI]&state=[THE_STATE]

接口以及参数详细说明地址:https://wiki.connect.qq.com/%E4%BD%BF%E7%94%A8authorization_code%E8%8E%B7%E5%8F%96access_token#Step1.EF.BC.9A.E8.8E.B7.E5.8F.96AuthorizationCode

代码实现:

/**
 * 生成授权链接
 * 
 * @param request
 * @return
 */

@RequestMapping("/qqAuth")
public String qqAuth(HttpServletRequest request) {
    try {
        String authorizeURL = new Oauth().getAuthorizeURL(request);
        log.info("authorizeURL:{}", authorizeURL);
        return "redirect:" + authorizeURL;
    } catch (Exception e) {
        return ERROR_500_FTL;
    }
}
3、QQ授权回调

在上边生成授权方法里进行了一次重定向,重定向地址即为本方法。

private static final String MB_QQ_QQLOGIN = "member/qqlogin";

/**
 * 重定向到首页
 */

private static final String REDIRECT_INDEX = "redirect:/";

@RequestMapping("/qqLoginBack")
public String qqLoginBack(HttpServletRequest request, HttpServletResponse response, HttpSession httpSession) {
    try {
        AccessToken accessTokenObj = (new Oauth()).getAccessTokenByRequest(request);
        if (accessTokenObj == null) {
            return ERROR_500_FTL;
        }
        String accessToken = accessTokenObj.getAccessToken();
        if (StringUtils.isEmpty(accessToken)) {
            return ERROR_500_FTL;
        }
        /* 获取用户openid */
        OpenID openIDObj = new OpenID(accessToken);

        String openId = openIDObj.getUserOpenID();
        if (StringUtils.isEmpty(openId)) {
            return ERROR_500_FTL;
        }
        BaseResponse<JSONObject> findByOpenId = qqAuthoriFeign.findByOpenId(openId);
        if (!isSuccess(findByOpenId)) {
            return ERROR_500_FTL;
        }
        Integer resultCode = findByOpenId.getCode();
        /* 如果使用openid没有查询到用户信息,则跳转到绑定用户信息页面 */
        if (resultCode.equals(Constants.HTTP_RES_CODE_NOTUSER_203)) {
            /* 使用openid获取用户信息 */
            UserInfo qzoneUserInfo = new UserInfo(accessToken, openId);
            UserInfoBean userInfoBean = qzoneUserInfo.getUserInfo();
            if (userInfoBean == null) {
                return ERROR_500_FTL;
            }
            String avatarURL100 = userInfoBean.getAvatar().getAvatarURL100();
            /* 返回用户头像页面展示 */
            request.setAttribute("avatarURL100", avatarURL100);
            httpSession.setAttribute(WebConstants.LOGIN_QQ_OPENID, openId);
            return MB_QQ_QQLOGIN;
        }
        /* 自动实现登陆 */
        JSONObject data = findByOpenId.getData();
        String token = data.getString("token");
        CookieUtils.setCookie(request, response, WebConstants.LOGIN_TOKEN_COOKIENAME, token);
        return REDIRECT_INDEX;
    } catch (Exception e) {
        return ERROR_500_FTL;
    }

}
4、测试环节

访问生成授权链接的方法地址:

http://shop.sscai.club/qqAuth

我创建了一个java相关的公众号,用来记录自己的学习之路,感兴趣的小伙伴可以关注一下微信公众号哈:niceyoo

niceyoo
关注 关注
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
QQ互联例子(java)
05-20
网站绑定QQ用,可以实现使用QQ登录功能.
java实现微信登录_java实现 微博登录、微信登录qq登录实现代码_java_脚本之家...
weixin_28819153的博客
02-16 243
微信,微博,QQ,这是现在目前用的最多的手机APP,我们做产品哪能不跟他们不沾边,对于登录,我想谁也不想要多少个帐号密码,根本记不住!为了增加用户体验,用户能够快速的注册登录,第三方账号进行登录注册的的需求也就由此而诞生1、微信1) 微信登录也是最坑人的,需要花300大洋成为开发者账户,没办法谁让微信用户群体大呢所以也就只好认了;然后登录网站后台需要创建网站应用,填写授权回调域(登录网站的域名)...
java多端登录_【Java】一个登录功能也能玩出这么多花样?sa-token带你轻松搞定多地登录、单地登录、同端互斥登录...
weixin_42556143的博客
03-01 1890
需求场景说起登录,你可能会不屑一顾,还有比这更简单的功能吗?获取一下用户提交参数 username + password 和数据库中一比对,有记录返回[登录成功],无记录返回[用户名或密码错误]什么,就这?当你熟练的打包、部署、启动项目开始了一天的摸鱼之后,产品经理开始坐不住了“小顺子啊,你看咱们的APP登录能不能加一个功能,就是那种……那个……一个用户登录之后,能把上一个登录的自动挤下线”此时的...
利用QQ互联实现第三方登录总结
G_X_Yang的博客
03-09 6849
一:准备工作1. 注册申请标识自己网站的appid和appkey点击打开链接2. 保证连接畅通,在自己的服务器上,ping graph.qq.com,保持连接通畅。二:放置QQ按钮实现点击1.按钮图片下载点击打开链接2.添加前台代码: &lt;a href="#"&gt; &lt;img src="webReso...
qq互联sdk--php
05-09
qq互联sdk 开发包,用于第三方一键登陆使用。适用于新手
java qq第三方登陆
12-26
java qq第三方登陆
JAVA 项目实现 QQ 互联的功能 QQ 授权登录系统(官方demo)
03-18
JAVA 项目实现 QQ 互联的功能 QQ 授权登录系统(官方...一直使用discuz论坛整合的QQ互联、一直没有使用java整合过QQ互联、网上搜了很多,貌似也有没有很清晰的说明、最终使用了官方的demo测试成功。(官方demo) QQ互联
qq互联--qq登录例子 java版 源码
02-07
qq登录,并获取qq昵称,头像,性别等(可以调用官方提供的所有接口) 只是在处理结果的时候不是很完美,以后会慢慢改进
第三方登陆-qq互联
03-03 519
看到很多网站都有第三方登陆,使用业余时间自己也要实现一个第三方登陆的功能: 1.登陆qq互联的网站:https://connect.qq.com/index.html 2.点击头像进行资料申请 ---未完待续..... qq第三方登陆需要导入的包-这个需要在官方的demo中导入maven <!-- 第三方QQ登录 --&gt...
java获取access token_【Java示例】如何获取AccessToken
weixin_32795427的博客
02-12 1800
好多新注册的开发者表示不太清楚如何获取AccessToken。首先还是建议大家看官网文档http://ai.baidu.com/docs#/Begin/top小帅帮大家写一个Java调用的示例首先是创建了应用。并得知APIKEY SECRETKEY 代码准备工作。先下载官网的HTTPUTIL工具类 稍做改动下载地址:https://ai.baidu.com/file/544D677F5D4E4F1...
2017最新qq第三方登陆教程
justinytsoft的博客
03-17 4390
一、注册成为开发者链接:https://connect.qq.com/index.html二、创建应用注册成功后在   应用管理 -》网站应用 里创建自己的应用三、获取app Id 和 app Key四、下载并导入SDK和配置文件下载链接:http://wiki.connect.qq.com/sdk下载五、在配置文件中填写自己的app id 等信息六、编写登陆和回调代码/*** qq登录页面* @...
第三方登录QQ登录(二)——OAuth2.0处理流程介绍(以QQ登录为例)
热门推荐
崔成龙 . 勇往直前
07-25 8万+
为了让网站更快接入,腾讯提供了JS SDK的接入方案,具体点击这里或者点击这里进行查看。     不过也可以自己写代码,当然你需要了解QQ的OAuth2.0的处理流程(Web Server Flow)。 OAuth2.0的处理流程: 点击这里查看官方Wiki。 1.授权:获取授权码Authorization Code  说明:第一步QQ必须得到要登
python实现qq登录_在django中实现QQ登录
weixin_39675178的博客
12-03 235
在服务器端做qq登录的流程:1.放置QQ登录按钮,这个去QQ的网站上下,把这个按钮的连接指向https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id=[YOUR_APPID]&redirect_uri=[YOUR_REDIRECT_URI]&scope=[THE_SCOPE],也可以先指向自己的...
对接第三方登录
qq_25432245的博客
07-25 1579
一:对接QQ前准备工作: 1,有已备案的域名; 2,https://connect.qq.com/登录QQ互联; 3,创建应用; 进入应用管理页面创建应用,根据实际需要是创建网站应用还是移动应用,我这里是网站应用: ...
php验证qq,php QQ第三方登录/OAuth2.0验证
weixin_29100399的博客
03-10 452
qq实现第三方网站登录创建QQ互联账号可用QQ号码登录 登录地址:http://connect.qq.com/QQ互联->管理中心->创建应用1.创建应用 2.创建网站 注意内容:网站地址一定要加入图中所标注的信息创建成功获取 APP ID 和 APP KEYheader请求public function actionQQ(){//$redirect 为回调地址 $app_id 应...
接入QQ第三方登录
光头强的博客
02-11 9280
一、登录QQ互联申请为开发者并创建网站应用 https://connect.qq.com/index.html 网站名称这儿必须填备案好的网站的那个名称!否则不予通过! 申请成功后appid和app key以及网站回调域就能使用: 二、放置登录按钮 给其加个超链接,通过http去访问一个接口。 三、获取Authorization Code值 请求地址:https://graph.qq.c...
第三方登录QQ登录接入指南
标题
10-08 6380
现在互联网应用一般都会接入QQ登录。但是在接入QQ登录的时候就有点犯晕了。因为摆在他们面前的有2个平台。 一个是 腾讯开放平台,一个是 QQ互联QQ互联QQ开放平台) 如果只是单纯的想要QQ授权登录、分享,而不需要进入腾讯应用宝市场的,那选择QQ互联就可以了,毕竟能满足需求。 腾讯开放平台(应用开放平台) 突然就改成应用开放平台 这里的选择就多了,应用开放平台除了支持基本的信息获取...
java编写qq登陆界面
最新发布
05-19
以下是一个简单的 Java 编写的 QQ 登录界面的示例代码: ```java import javax.swing.*; import java.awt.*; import java.awt.event.*; public class QQLogin extends JFrame implements ActionListener { ...

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • IDEA社区版(Community)和付费版(UItimate)的区别 75018
  • 洛达检测软件AB1562UT_1.4.4新版本下载,适用洛达全系列 33633
  • AB1562_UT软件分辨真假洛达1562A,洛达1562a怎么鉴别? 31872
  • JPA分页查询与条件分页查询 31082
  • 华强北AirPods洛达1562A固件升级教程,带空间音频(艾创力+东莞豪锐) 30705

分类专栏

  • Linux 2篇
  • Netty 2篇
  • Android 19篇
  • Redis 6篇
  • 支付宝支付 3篇
  • Docker 12篇
  • 面试相关
  • Vue 1篇
  • SpringMVC 1篇
  • uniapp 1篇
  • 微信小程序 1篇
  • Maven 1篇
  • 数据库 1篇
  • Flutter 16篇
  • JavaWeb 9篇
  • RabbitMQ 8篇
  • Java基础 17篇
  • JVM 5篇
  • SpringBoot 8篇
  • Spring 4篇
  • Jeecg 1篇
  • Jeesite 1篇
  • 工具安装 33篇
  • 随笔感悟 18篇

最新评论

  • CentOS离线安装gcc环境(附安装包+图文并茂)

    最后呢。: 我也给干崩了,有没有什么方法解决

  • CentOS离线安装gcc环境(附安装包+图文并茂)

    最后呢。: 我也干崩了,有没有什么方法解决

  • IDEA社区版(Community)和付费版(UItimate)的区别

    winter_cc: Java 面试题宝典被吞了

  • 华强北耳机修改序列号|支持中英文|自定义修改|傻瓜式一键修改序列号~

    2301_79507201: 有没有 洛达1562AE 的序列号修改的

最新文章

  • Parallels 升级后提示虚拟机网络初始化失败
  • Linux curl -L 时报 Failed connect to github.com:443; Connection refused
  • 为什么华强北耳机这么多坑?
2022年4篇
2021年32篇
2020年114篇
2019年140篇
2018年52篇
2017年13篇
2016年8篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

niceyoo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值

聚圣源古堡迷踪下载网游小说txt下载985女高材生成毒枭房屋四周装监控姓张怎么取名起名大全惠州车管所魔界骑士イングリッド鸭脖店加盟黎家大院搞笑一家人韩国版百度影音公司起名图片北京尚城2月6日易经取名起名大全公司拉布拉多起名起什么名字好456动画片psp幻想传说起名周易网免费店铺起名打分免费测量孙氏男宝宝起名大全段姓男孩起名2021起名字代金字男孩起名 恒驯服小姨子仲达起名女孩梓烨起名的寓意现代修仙录方氏男宝起名2020年免费起名字大全男孩起名好听的单字三藏公司起名测吉凶淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻让美丽中国“从细节出发”清明节放假3天调休1天男孩疑遭霸凌 家长讨说法被踢出群国产伟哥去年销售近13亿网友建议重庆地铁不准乘客携带菜筐雅江山火三名扑火人员牺牲系谣言代拍被何赛飞拿着魔杖追着打月嫂回应掌掴婴儿是在赶虫子山西高速一大巴发生事故 已致13死高中生被打伤下体休学 邯郸通报李梦为奥运任务婉拒WNBA邀请19岁小伙救下5人后溺亡 多方发声王树国3次鞠躬告别西交大师生单亲妈妈陷入热恋 14岁儿子报警315晚会后胖东来又人满为患了倪萍分享减重40斤方法王楚钦登顶三项第一今日春分两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?周杰伦一审败诉网易房客欠租失踪 房东直发愁男子持台球杆殴打2名女店员被抓男子被猫抓伤后确诊“猫抓病”“重生之我在北大当嫡校长”槽头肉企业被曝光前生意红火男孩8年未见母亲被告知被遗忘恒大被罚41.75亿到底怎么缴网友洛杉矶偶遇贾玲杨倩无缘巴黎奥运张立群任西安交通大学校长黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发妈妈回应孩子在校撞护栏坠楼考生莫言也上北大硕士复试名单了韩国首次吊销离岗医生执照奥巴马现身唐宁街 黑色着装引猜测沈阳一轿车冲入人行道致3死2伤阿根廷将发行1万与2万面值的纸币外国人感慨凌晨的中国很安全男子被流浪猫绊倒 投喂者赔24万手机成瘾是影响睡眠质量重要因素春分“立蛋”成功率更高?胖东来员工每周单休无小长假“开封王婆”爆火:促成四五十对专家建议不必谈骨泥色变浙江一高校内汽车冲撞行人 多人受伤许家印被限制高消费

聚圣源 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化