QQ第三方登录

  • 1 导包
  • 2 配置
  • 3 建包oauth2并扫描
  • 4 编写qqcontroller
  • 5 登录页面加入QQ登录
  • 6 修改hosts配置文件

1 导包

 <dependency><groupId>net.gplatform</groupId><artifactId>Sdk4J</artifactId><version>2.0</version></dependency>

2 配置

最好查看qq给出的demo例子
创建 qqconnectconfig.properties放在resources根目录下
redirect_URI = http://javatv.cn/loginAfter为登录之后重定向跳转的地址

app_ID = 这里填域名id
app_KEY = 这里填域名的key
redirect_URI = http://域名/loginAfter
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

3 建包oauth2并扫描

<context:component-scan base-package="cn.itsource.oauth2" />

4 编写qqcontroller

@Controller
public class QQcontroller {@Autowiredprivate RestTemplate restTemplate;@Autowiredprivate UserService userService;@RequestMapping("/qqLogin")public  void qqLogin(HttpServletRequest request, HttpServletResponse response){
//        response.setContentType("text/html;charset=utf-8");try {//重定向到qq的授权登录页面response.sendRedirect(new Oauth().getAuthorizeURL(request));} catch (Exception e) {e.printStackTrace();}}/****  登录成功之后,它会自动跳转到域名http://javatv.cn/loginAfter*  需要配置hosts文件, 127.0.0.1 javatv.cn才能跳转到这里*/@RequestMapping("/loginAfter")public  String afterLogin(HttpServletRequest request, HttpServletResponse response){try {AccessToken accessTokenObj = (new Oauth()).getAccessTokenByRequest(request);String accessToken   = null,openID        = null;long tokenExpireIn = 0L;if (accessTokenObj.getAccessToken().equals("")) {
//                我们的网站被CSRF攻击了或者用户取消了授权
//                做一些数据统计工作System.out.print("没有获取到响应参数");} else {accessToken = accessTokenObj.getAccessToken();tokenExpireIn = accessTokenObj.getExpireIn();request.getSession().setAttribute("demo_access_token", accessToken);request.getSession().setAttribute("demo_token_expirein", String.valueOf(tokenExpireIn));// 利用获取到的accessToken 去获取当前用的openid -------- startOpenID openIDObj = new OpenID(accessToken);openID = openIDObj.getUserOpenID();System.out.println("欢迎你,代号为 " + openID + " 的用户!");request.getSession().setAttribute("demo_openid", openID);System.out.println("<a href=" + "/shuoshuoDemo.html" + " target=\"_blank\">去看看发表说说的demo吧</a>");// 利用获取到的accessToken 去获取当前用户的openid --------- end/****  自己的代码:获取qq信息*/System.out.println("==================start====================");String url = "https://graph.qq.com/user/get_user_info?access_token="+ accessToken + "&oauth_consumer_key=101543517" + "&openid=" + openID + "&format=json ";String json = restTemplate.getForObject(url, String.class);//反序列化ObjectMapper objectMapper = new ObjectMapper();HashMap map = objectMapper.readValue(json, HashMap.class);System.err.println(map);System.err.println(map.get("figureurl_qq_1"));/****      如果用户存在openId,说明用户之前登录过了,直接跳转到main.jsp*      如果用户不存在,那么就说明用户第一次登录,需要保存到数据库,然后在跳转到main.jsp*/User user = new User();user.setOpenid(openID);User u = userService.queryByParam(user);if (u!=null){return "main";}else {user.setLoginName(UUID.randomUUID().toString());user.setLoginPwd("123456");user.setDelFlag(1);userService.insert(user);}System.out.println("==================end====================");System.out.println("<p> start ----------------------------------- 验证当前用户是否为认证空间的粉丝------------------------------------------------ start <p>");PageFans pageFansObj = new PageFans(accessToken, openID);PageFansBean pageFansBean = pageFansObj.checkPageFans("97700000");if (pageFansBean.getRet() == 0) {System.out.println("<p>验证您" + (pageFansBean.isFans() ? "是" : "不是") + "QQ空间97700000官方认证空间的粉丝</p>");} else {System.out.println("很抱歉,我们没能正确获取到您的信息,原因是: " + pageFansBean.getMsg());}}} catch (Exception e){e.printStackTrace();}return "main";}
}

5 登录页面加入QQ登录

         <%--第三方登录--%><div style="text-align: center"><img id="qqLogin" src="/img/qq.png" width="75" height="25"></div>//qq登录点击事件$("#qqLogin").click(function () {location.href="/qqLogin"})

6 修改hosts配置文件

C:\windows\system32\drivers\etc
输入javatv.cn的时候跳转到127.0.0.1
127.0.0.1 javatv.cn

第三方qq登陆(支持扫码)相关推荐

  1. 微信登陆的LOL只有一个服务器,《LOL》部分大区开启微信登陆功能 扫码即可进入游戏...

    <LOL>部分大区开启微信登陆功能 扫码即可进入游戏 2019-05-06 16:33:28来源:游戏下载编辑:柠檬评论(0) <英雄联盟>官方今日发公告表示,部分大区已开放微 ...

  2. 自主开发视频打赏系统,支持内付,支持扫码付款

    自主开发视频打赏系统,支持内付,支持扫码付款,用户投诉过之后无法再次访问.采用新技术编写,绝对不会出现付款后无法观看的问题,无视用户更换IP,无视服务器更换域名,不影响用户购买记录.多域名配置.假投诉 ...

  3. 刷脸支付设备不仅支持刷脸也支持扫码

    刷脸支付彻底摆脱手机束缚不怕忘带.不怕没电.不怕信号不好,刷脸验证即可完成支付,安全.快捷,交易安全官方认证机型,全新3D传感摄像头,刷脸验证,识别准确,账户资金安全保障大幅提升, 效率高.体验好快速 ...

  4. 五、Springboot 整合Shiro---03认证---第三方QQ登陆

    本章节基于:四.Springboot 整合Shiro---02认证---记住我 在开始之前,先要理解一下oauth2: 推荐去看一下(六.授权码模式):阮一峰讲解的oauth2 下面附上一张阮一峰博客 ...

  5. 【网课平台】Day10.对接第三方:实现微信扫码登录

    文章目录 一.需求:微信扫码登录 1.接口文档 2.开发环境准备 3.接入分析 4.接口定义 5.申请令牌 6.查询用户信息 7.保存用户信息 一.需求:微信扫码登录 (和第三方对接的流程) 1.接口 ...

  6. 第三方登录之微信扫码登录

    文章目录 1. 申请微信接入: 2. 项目环境搭建: 3.后端Controller接口: 4.HTML页面代码: 5.测试结果: 6.补充说明: 小伙伴们有各种疑问可以去参考官方文档进行详细的学习下 ...

  7. 整合第三方登录之微信扫码登录

    文章目录 前言 一.引入相关依赖 二.操作步骤 1.生成微信登录二维码 2.获取微信用户信息并实现微信注册登录 总结 前言 前置条件:具备微信开发者资质. 通过微信开放平台注册.完善开发者资料.申请开 ...

  8. php qq钱包扫码接口,QQ钱包PHP扫码支付源码

    php原生开发QQ钱包源码,从下单,支付,再到查询是否支付成功 QQ钱包代码很简单,代码都详细注释了$params = array(); $params["out_trade_no" ...

  9. 【新版API】实现第三方应用钉钉扫码登录

    这篇文章默认你已经在钉钉创建好了H5微应用,同时对一些功能有一定了解. 首先,需要明白整个授权登录的流程,如下图所示: 下面的示例可用于前后端分离项目应用场景,后端以springboot,前端以htm ...

最新文章

  1. TeaTalk 线上直播倒计时 | 云数据库技术创新研究与实践
  2. shell执行mysql命令
  3. 漫画:什么是“低代码”开发平台?
  4. Several ports (8005, 8080, 8009) required by Tomcat v5.5 Server at localhost are already in use.....
  5. sts无法创建java_java – STS无法在我的机器上启动
  6. 利用Ajax实现数据的同步传输,从mysql中提取数据,通过echarts可视化
  7. 007 Android之Broadcast Receiver
  8. matlab余割平方方向图,基于余割平方赋形波束的宽带微带阵列天线设计
  9. [原创]2014年上半年测试书籍推荐
  10. 20145228 《信息安全系统设计基础》第0周学习总结
  11. Python处理JSON
  12. vscode 文件夹中查找_真香!使用 VSCode 进行远程开发调试
  13. Zookeeper原理分析之存储结构ZkDatabase
  14. Visual Studio 2013/2015/2017快捷键(转)
  15. linux网关管理,利用Linux打造安全的管理型网关
  16. 【读书笔记《Android游戏编程之从零开始》】17.游戏开发基础(游戏适屏的简述和作用、让游戏主角动起来)
  17. python调用phone库查询手机号码相关信息
  18. CPCI总线和VPX总线的区别
  19. 【第8题】求 s=a+aa+aaa+aaaa+aa...a 的值
  20. 南京大学计算机科学与技术,南京大学计算机科学与技术系简介

热门文章

  1. Vue结合天地图(天地图API)Gis开发
  2. 《A Brief History of Humankind》— Foreword
  3. 全息投影是计算机技术吗,「图文」3D全息投影技术原理【图文详解】-火米互动...
  4. Qt使用QMediaPlayer类获取多媒体信息
  5. 探索ring0-内核漏洞概述 和 实验环境配置
  6. EOS钱包EosToken开始空投代币了,新用户可领取1.05个EOS
  7. html2canvas实现页面截图功能
  8. Asterisk拨号方案一
  9. Clickhouse 物化视图 MATERIALIZED VIEW
  10. 006-人际关系理论|你真的知道推搡员工的后果吗