首先要做的在QQ互联申请项目QQ互联官网首页 ,申请通过会得到APPID , APPKey 


一 : 在HTML/JSP页面放置符合QQ互联标准的QQ登录图标

附代码:

 <a href="https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id= "+ 此处填APPID +"  &redirect_uri= " + 此处填回调地址 + " &state=fefwerwf" class="icon connect-qq" ><span icon-bg2="icon_qq_n"></span><img alt="" src=  "+ 此处填QQ图标的路径 +" style="width:120px;height:24px"></a>

测试可以正常跳转:此刻Authorization_Code包含在URL地址栏

二 :获取Access_Token

Authorization_Code从哪里来?QQ互联我设置的回调地址指到了Servlet , Servlet可以通过

request.getParameter("code")  抓到code值。

然后通过调用 QQ_LoginUtil.getAccess_token() 得到Access_Token ,该方法我已封装,附最后

String Access_Token =  QQ_LoginUtil.getAccess_token(code, "填APPID", "填APPKey", "填回调地址");

三 : 获取用户OpenID

通过第二步得到的Access_Token,调用QQ_LoginUtil.getOpen_ID() 得到OpenID

String openid =  QQ_LoginUtil.getOpen_ID(Access_Token);

四 : 大结局、获取用户个人信息

通过得到的Access_Token、OpenID,便可以拿到用户个人信息,返回值为JSON类型

JSONObject info =  QQ_LoginUtil.getUserInfo("填APPID", Access_Token  , OpenID);

返回值(昵称,年龄,头像……)

{"ret":0,"msg":"","nickname":"你的昵称",...
}

附:文中使用的封装代码,get方法使用的jar包为 commons-io-2.11.0.jar


import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;import com.alibaba.fastjson.JSONObject;
/*** 首先要在HTML页面放置QQ登录标准登录按钮(参考QQ互联)* @author 时光**/
public class QQ_LoginUtil {/*** 第一步:得到token* @param code 网页授权得到的code* @param APPID QQ后台QQAppID* @param APPKey QQ后台QQAppKey* @param redirect_uri QQ后台设置的回调地址* @return Access_token*/public static String getAccess_token(String code,String APPID,String APPKey,String redirect_uri) {String getAccess_token = get("https://graph.qq.com/oauth2.0/token?grant_type=authorization_code&client_id="+APPID+"&client_secret="+APPKey+"&code="+ code + "&redirect_uri="+redirect_uri+"&fmt=json");JSONObject json = JSONObject.parseObject(getAccess_token);String res = json.getString("access_token");System.out.println(res);return res;}/*** 第二步:通过第一步拿到的Access_token 得到用户的Open_ID* @param Access_token 第一步拿到的Access_token* @return Open_ID*/public static String getOpen_ID(String Access_token ) {String getOpenID = get("https://graph.qq.com/oauth2.0/me?access_token=" + Access_token + "&fmt=json");JSONObject jsons = JSONObject.parseObject(getOpenID);System.out.println(jsons + "这是获取到getOpenID");String OpenID = jsons.getString("openid");System.out.println(OpenID);return OpenID;}/*** 第三步:通过Access_token和OpenID获得用户的所有信息,返回JSONobject类型* @param APPID QQ后台QQAppID* @param Access_token 第一步拿到的Access_token* @param OpenID 第二步拿到的OpenID* @return UserInfo*/public static JSONObject getUserInfo(String APPID,String Access_token,String OpenID ) {String getOpenAPI = get("https://graph.qq.com/user/get_user_info?access_token=" + Access_token+ "&oauth_consumer_key="+APPID+"&openid=" + OpenID);JSONObject jsonss = JSONObject.parseObject(getOpenAPI);System.out.println(jsonss);return jsonss;}/*** GET方法* @param url* @return* get方法*/public static String get(String url) {BufferedReader in = null;try {URL realUrl = new URL(url);// 打开和URL之间的连接URLConnection connection = realUrl.openConnection();// 设置通用的请求属性connection.setRequestProperty("accept", "*/*");connection.setRequestProperty("connection", "Keep-Alive");connection.setConnectTimeout(5000);connection.setReadTimeout(5000);// 建立实际的连接connection.connect();// 定义 BufferedReader输入流来读取URL的响应in = new BufferedReader(new InputStreamReader(connection.getInputStream()));StringBuffer sb = new StringBuffer();String line;while ((line = in.readLine()) != null) {sb.append(line);}return sb.toString();} catch (Exception e) {System.out.println("错误报告," + e);} finally {try {if (in != null) {in.close();}} catch (Exception e2) {e2.printStackTrace();}}return null;}}

JavaWeb项目调用QQ登录----QQ互联相关推荐

  1. java 模拟qq空间登陆_java最新完美实现模拟登录QQ登录QQ空间获取说说

    package com.pengliu.config; import com.pengliu.util.http.HttpService; /** * desc: 全局公共属性配置 */ public ...

  2. php 第三方qq 登录,QQ第三方登录

    ### 前置条件 1. 一个QQ号. 2. 一台公网通过域名可访问的web服务器. 3. 需要备案 . ### QQ登录流程 1. 打开网站QQ互联 : [http://connect.qq.com] ...

  3. JavaWeb项目----实现用户登录、注册、对商品信息进行的添加、删除、修改功能

    MySQL部分 #创建数据库 create database mydb;#创建表 create table t_user (uid int primary key auto_increment,use ...

  4. javaweb项目:用户(登录和注销)实现 SSM框架(mybatis-generator自动生成代码)

    SSM框架的搭建环境(Spring,SpringMVC,Mybatis) 使用工具:maven.idea.tomcat用的是8.jdk版本1.8 一.整个项目的结构: 用户模块流程 pom.xml - ...

  5. Django项目实战——6—(退出登录、判断用户是否登录、QQ登录、QQ登录工具QQLoginTool、本机绑定域名)

    1.退出登录 注册界面跳转到登陆界面:templates/register.html 前端注册界面 {# 跳转到登陆界面 #}<a href="{% url 'users:login' ...

  6. 【愚公系列】2022年01月 Django商城项目13-登录界面-QQ登录功能实现

    文章目录 前言 1.QQ互联开发者申请 2.QQ互联应用申请 3.网站对接QQ登录 一.django实际对接流程 1.创建抽象模型类 2.创建QQ用户模型类 3.注册应用 4.配置QQ登录信息 5.登 ...

  7. IdentityServer4(10)- 添加对外部认证的支持之QQ登录

    前言 前面我们提到过IdentityServer4是可以添加外部认证的,如果外部认证支持OAuth2,那么添加到IdentityServer4是非常简单的,在ASP.NET Core下提供了非常多的外 ...

  8. SpringBoot - OAuth2第三方登录之QQ登录

    之前写过一篇OAuth2 - 第三方登录之新浪登录,也写过一篇OAuth2 - 第三方登录之微信登录,提到过QQ审核很复杂,我之前提交审核很多次,各种原因失败,这一次总算成功了,所以便来记录一下其中过 ...

  9. Django实现QQ登录

    软件开发之实现QQ登录 问题:为什么实现QQ登录? ​ QQ登录:即我们所说的第三方登录,是指用户可以不在本项目中输入密码,而直接通过第三方的验证,成功登录本项目. QQ互联开发者申请 若想实现QQ登 ...

最新文章

  1. 函数assert()详解
  2. vim win装_VIM的代码补全工具YouCompleteMe在Windows上的安装攻略
  3. Error:java: Annotation processing is not supported for module cycles. Please ensure that all modules
  4. 游戏AI之决策结构—行为树
  5. mysql数据通讯方式_c# 与 Mysql 的通讯方式总结
  6. java ee编译器_Java EE 8 MVC:控制器的详细介绍
  7. Liferay 部署war包时候的deployDirectory 细节分析
  8. 近年来量子计算机,近年来量子计算机研究的进展和困难.doc
  9. 装机经验-某些服务器安装系统困难,需要BIOS设置
  10. [LeetCode]题解(python):016-3Sum Closest
  11. 宏碁台式计算机u盘启动,Acer台式机怎么U盘启动
  12. Photoshop 更改图片颜色
  13. 语义化你的HTML标签和属性
  14. 元宇宙时代的5大风险
  15. NPDP第三章:新产品流程
  16. Android设置iptable实现外网访问
  17. 数据库之MySQL基本操作命令
  18. Build file: no target in no project
  19. 多维泰勒网matlab,非线性系统多维泰勒网控制的稳定性分析及性能优化
  20. 基于R语言股票市场收益的统计可视化分析

热门文章

  1. 视频号怎么运营、引流、推广、从而变现赚钱?丨国仁网络资讯
  2. 职业高中计算机报志愿,中考志愿可以填职高吗
  3. 局域网arp攻击_谈谈电子欺骗中的ARP欺骗
  4. Alfred上可提高工作效率的Workflow推荐
  5. 【CSDN英雄会】大众点评黄俊东:Android开发者经验谈
  6. 伪随机码(verilog)
  7. 大数据实践项目 Nginx日志分析可视化
  8. d3中图表大小自适应区域大小
  9. python语言特点可读性_python语言的特点是什么?python语言好学吗?
  10. 一个和二维泊松求和有关的公式(推导Ewald级数中有用,运用了2D泊松求和公式,傅里叶变换的位移性质)