JavaQQ授权登录Demo ,整合官网直接运行版本

发布时间:2019-06-25
6人 | 浏览:3120次 | 收藏 | 分享
技术:spirngboot+OAuth2.0+html+mevan
运行环境:eclipse/idea+java jdk 1.8+

概述

场景介绍 用于web网站,用户点击头像授权登录后,获取用户的昵称、头像、性别进行数据同步并且登录。

详细

详细

功能演示

一、相关配置

QQ APP ID(QQ互联官网-->应用管理-->APP ID

QQ APP KEY (QQ互联官网-->应用管理-->APP KEY)

QQ 网站回调域 (QQ互联官网-->应用管理-->网站回调)

application.properties 文件 Demo上都有默认值,不需要修改直接使用,省心!

1.png

网站开发流程

http://wiki.connect.qq.com/%E5%87%86%E5%A4%87%E5%B7%A5%E4%BD%9C_oauth2-0

SDK与DEMO下载

http://wiki.connect.qq.com/sdk%E4%B8%8B%E8%BD%BD

二、目录结构

2.png

三、准备工作

修改本地电脑host文件

下面以 win10系统 为例子,打开路径:c:\windows\system32\drivers\etc

选择 hosts 文件, 右键-->打开方式-->记事本

修改前 :

3.png

在最下面空白处添加:127.0.0.1 www.lvjingwei.xyz

修改后 :

3.png

四、功能测试

       访问首页 :  www.lvjingwei.xyz

3.png

点击 --> QQ 网页授权

3.png

点击 --> 头像

3.png

五、功能讲解

流程图:

3.png

(1)获取Access_Token

//获取Access_Token
String tokenURL = "https://graph.qq.com/oauth2.0/token";
tokenURL +=  "?grant_type=authorization_code";
tokenURL +=   "&client_id="+appID;
tokenURL +=   "&client_secret="+appKey;
tokenURL +=   "&code="+code;
tokenURL +=   "&redirect_uri="+redirectURI;
String accessTokenString = HttpsClient.httpsRequestReturnString(tokenURL,HttpsClient.METHOD_GET,null);

更多的信息,请看官网

官网相关链接 http://wiki.connect.qq.com/%E4%BD%BF%E7%94%A8authorization_code%E8%8E%B7%E5%8F%96access_token

(2)获取用户OpenID

//获取用户OpenID
String openURL = "https://graph.qq.com/oauth2.0/me";
openURL += "?access_token="+ accessToken;
String openIDString = HttpsClient.httpsRequestReturnString(openURL,HttpsClient.METHOD_GET,null);
String openID = CommonUtil.getOpenID(openIDString);

更多的信息,请看官网

官网相关链接

http://wiki.connect.qq.com/%E8%8E%B7%E5%8F%96%E7%94%A8%E6%88%B7openid_oauth2-0

(3)获取登录用户的昵称、头像、性别

//获取登录用户的昵称、头像、性别
String getUserInfoURL =  "https://graph.qq.com/user/get_user_info";
getUserInfoURL += "?access_token="+accessToken;
getUserInfoURL += "&oauth_consumer_key="+appID;
getUserInfoURL += "&openid="+openID;
getUserInfoURL += "&format=json";
JSONObject infoJSONObject = HttpsClient.httpsRequestReturnJSONObject(getUserInfoURL,HttpsClient.METHOD_GET,null);
if(infoJSONObject != null && infoJSONObject.get("ret") != null && StringUtils.equals(infoJSONObject.getString("ret"),"0")){

    model.addAttribute("nickname",infoJSONObject.getString("nickname"));
    model.addAttribute("figureurl",infoJSONObject.getString("figureurl"));
    model.addAttribute("figureurl_1",infoJSONObject.getString("figureurl_1"));
    model.addAttribute("figureurl_2",infoJSONObject.getString("figureurl_2"));
    model.addAttribute("figureurl_qq_1",infoJSONObject.getString("figureurl_qq_1"));
    model.addAttribute("figureurl_qq_2",infoJSONObject.getString("figureurl_qq_2"));
    model.addAttribute("gender",infoJSONObject.getString("gender"));
    model.addAttribute("is_yellow_vip",infoJSONObject.getString("is_yellow_vip"));
    model.addAttribute("vip",infoJSONObject.getString("vip"));
    model.addAttribute("yellow_vip_level",infoJSONObject.getString("yellow_vip_level"));
    model.addAttribute("level",infoJSONObject.getString("level"));
    model.addAttribute("is_yellow_year_vip",infoJSONObject.getString("is_yellow_year_vip"));
    model.addAttribute("city",infoJSONObject.getString("city"));
    model.addAttribute("province",infoJSONObject.getString("province"));
    model.addAttribute("year",infoJSONObject.getString("year"));
    model.addAttribute("is_lost",infoJSONObject.getString("is_lost"));
}else{
    System.out.println("获取 获取登录用户的昵称、头像、性别 失败, 请检查参数!");
}

更多的信息,请看官网

官网相关链接

http://wiki.connect.qq.com/get_user_info

(4)前端页面

index.html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head >
    <title>QQ网页授权</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <script type='text/javascript'>

    </script>
</head>
<body>

<h1><a th:href="${qqAuthURL}">QQ网页授权</a></h1>

</body>
</html>

info.html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head >
    <title>获取登录用户的昵称、头像、性别</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
    <p><strong th:text="${nickname}"></strong>&nbsp;&nbsp;用户在QQ空间的昵称。</p>
    <p><strong th:text="${gender}"></strong>&nbsp;&nbsp;   性别。 如果获取不到则默认返回"男"</p>
    <p><strong th:text="${province}"></strong>&nbsp;&nbsp;省份</p>
    <p><strong th:text="${city}"></strong>&nbsp;&nbsp;城市</p>
    <p><strong th:text="${year}"></strong>&nbsp;&nbsp;年份</p>
    <p><strong th:text="${figureurl}"></strong>&nbsp;&nbsp;大小为30×30像素的QQ空间头像URL。</p>
    <p><strong th:text="${figureurl_1}"></strong>&nbsp;&nbsp;大小为50×50像素的QQ空间头像URL。</p>
    <p><strong th:text="${figureurl_2}"></strong>&nbsp;&nbsp;大小为100×100像素的QQ空间头像URL。</p>
    <p><strong th:text="${figureurl_qq_1}"></strong>&nbsp;&nbsp;大小为40×40像素的QQ头像URL。</p>
    <p><strong th:text="${figureurl_qq_2}"></strong>&nbsp;&nbsp;大小为100×100像素的QQ头像URL。需要注意,不是所有的用户都拥有QQ的100x100的头像,但40x40像素则是一定会有。</p>
    <p><strong th:text="${is_yellow_vip}"></strong>&nbsp;&nbsp;标识用户是否为黄钻用户(0:不是;1:是)</p>
    <p><strong th:text="${vip}"></strong>&nbsp;&nbsp;标识用户是否为黄钻用户(0:不是;1:是)</p>
    <p><strong th:text="${yellow_vip_level}"></strong>&nbsp;&nbsp;黄钻等级</p>
    <p><strong th:text="${level}"></strong>&nbsp;&nbsp;黄钻等级</p>
    <p><strong th:text="${is_yellow_year_vip}"></strong>&nbsp;&nbsp;标识是否为年费黄钻用户(0:不是; 1:是)</p>
    <p><strong th:text="${is_lost}"></strong>&nbsp;&nbsp;是否丢失</p>
</body>
</html>

吐槽一下:QQ的接口API文档,写得太垃圾了,各种不清晰。SDK 也是太过复杂了,没有必要,上面的例子是参考过 官网SDK 再优化的,简单易懂。

谢谢大家观看~




本实例支付的费用只是购买源码的费用,如有疑问欢迎在文末留言交流,如需作者在线代码指导、定制等,在作者开启付费服务后,可以点击“购买服务”进行实时联系,请知悉,谢谢
手机上随时阅读、收藏该文章 ?请扫下方二维码

聚圣源起名字评分免费检测闪闪的星星像什么30000日元等于多少人民币缘之空第10集邻家有女初长成txt明天会更好原唱小孩起名免费软件全家便利店加盟张姓猪年宝起名特朗普简介谍影重重3网络电视下载排行司空见惯的意思coreldraw12简体中文版下载属猴的人取名起名大全洋洋得意的意思三青年殴打13岁男孩半条命2下载男童英文名称怎么起姓高男孩起名字啊易燃易爆暴力摩托下载国内 起名一梦到北大过敏吃什么药藏语起名宜昌车祸文学常识题库qq空间flash素材海底两万里读后感淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻让美丽中国“从细节出发”清明节放假3天调休1天男孩疑遭霸凌 家长讨说法被踢出群国产伟哥去年销售近13亿网友建议重庆地铁不准乘客携带菜筐雅江山火三名扑火人员牺牲系谣言代拍被何赛飞拿着魔杖追着打月嫂回应掌掴婴儿是在赶虫子山西高速一大巴发生事故 已致13死高中生被打伤下体休学 邯郸通报李梦为奥运任务婉拒WNBA邀请19岁小伙救下5人后溺亡 多方发声王树国3次鞠躬告别西交大师生单亲妈妈陷入热恋 14岁儿子报警315晚会后胖东来又人满为患了倪萍分享减重40斤方法王楚钦登顶三项第一今日春分两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?周杰伦一审败诉网易房客欠租失踪 房东直发愁男子持台球杆殴打2名女店员被抓男子被猫抓伤后确诊“猫抓病”“重生之我在北大当嫡校长”槽头肉企业被曝光前生意红火男孩8年未见母亲被告知被遗忘恒大被罚41.75亿到底怎么缴网友洛杉矶偶遇贾玲杨倩无缘巴黎奥运张立群任西安交通大学校长黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发妈妈回应孩子在校撞护栏坠楼考生莫言也上北大硕士复试名单了韩国首次吊销离岗医生执照奥巴马现身唐宁街 黑色着装引猜测沈阳一轿车冲入人行道致3死2伤阿根廷将发行1万与2万面值的纸币外国人感慨凌晨的中国很安全男子被流浪猫绊倒 投喂者赔24万手机成瘾是影响睡眠质量重要因素春分“立蛋”成功率更高?胖东来员工每周单休无小长假“开封王婆”爆火:促成四五十对专家建议不必谈骨泥色变浙江一高校内汽车冲撞行人 多人受伤许家印被限制高消费

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