JavaWeb项目调用QQ登录----QQ互联
首先要做的在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互联相关推荐
- java 模拟qq空间登陆_java最新完美实现模拟登录QQ登录QQ空间获取说说
package com.pengliu.config; import com.pengliu.util.http.HttpService; /** * desc: 全局公共属性配置 */ public ...
- php 第三方qq 登录,QQ第三方登录
### 前置条件 1. 一个QQ号. 2. 一台公网通过域名可访问的web服务器. 3. 需要备案 . ### QQ登录流程 1. 打开网站QQ互联 : [http://connect.qq.com] ...
- JavaWeb项目----实现用户登录、注册、对商品信息进行的添加、删除、修改功能
MySQL部分 #创建数据库 create database mydb;#创建表 create table t_user (uid int primary key auto_increment,use ...
- javaweb项目:用户(登录和注销)实现 SSM框架(mybatis-generator自动生成代码)
SSM框架的搭建环境(Spring,SpringMVC,Mybatis) 使用工具:maven.idea.tomcat用的是8.jdk版本1.8 一.整个项目的结构: 用户模块流程 pom.xml - ...
- Django项目实战——6—(退出登录、判断用户是否登录、QQ登录、QQ登录工具QQLoginTool、本机绑定域名)
1.退出登录 注册界面跳转到登陆界面:templates/register.html 前端注册界面 {# 跳转到登陆界面 #}<a href="{% url 'users:login' ...
- 【愚公系列】2022年01月 Django商城项目13-登录界面-QQ登录功能实现
文章目录 前言 1.QQ互联开发者申请 2.QQ互联应用申请 3.网站对接QQ登录 一.django实际对接流程 1.创建抽象模型类 2.创建QQ用户模型类 3.注册应用 4.配置QQ登录信息 5.登 ...
- IdentityServer4(10)- 添加对外部认证的支持之QQ登录
前言 前面我们提到过IdentityServer4是可以添加外部认证的,如果外部认证支持OAuth2,那么添加到IdentityServer4是非常简单的,在ASP.NET Core下提供了非常多的外 ...
- SpringBoot - OAuth2第三方登录之QQ登录
之前写过一篇OAuth2 - 第三方登录之新浪登录,也写过一篇OAuth2 - 第三方登录之微信登录,提到过QQ审核很复杂,我之前提交审核很多次,各种原因失败,这一次总算成功了,所以便来记录一下其中过 ...
- Django实现QQ登录
软件开发之实现QQ登录 问题:为什么实现QQ登录? QQ登录:即我们所说的第三方登录,是指用户可以不在本项目中输入密码,而直接通过第三方的验证,成功登录本项目. QQ互联开发者申请 若想实现QQ登 ...
最新文章
- 函数assert()详解
- vim win装_VIM的代码补全工具YouCompleteMe在Windows上的安装攻略
- Error:java: Annotation processing is not supported for module cycles. Please ensure that all modules
- 游戏AI之决策结构—行为树
- mysql数据通讯方式_c# 与 Mysql 的通讯方式总结
- java ee编译器_Java EE 8 MVC:控制器的详细介绍
- Liferay 部署war包时候的deployDirectory 细节分析
- 近年来量子计算机,近年来量子计算机研究的进展和困难.doc
- 装机经验-某些服务器安装系统困难,需要BIOS设置
- [LeetCode]题解(python):016-3Sum Closest
- 宏碁台式计算机u盘启动,Acer台式机怎么U盘启动
- Photoshop 更改图片颜色
- 语义化你的HTML标签和属性
- 元宇宙时代的5大风险
- NPDP第三章:新产品流程
- Android设置iptable实现外网访问
- 数据库之MySQL基本操作命令
- Build file: no target in no project
- 多维泰勒网matlab,非线性系统多维泰勒网控制的稳定性分析及性能优化
- 基于R语言股票市场收益的统计可视化分析
热门文章
- 视频号怎么运营、引流、推广、从而变现赚钱?丨国仁网络资讯
- 职业高中计算机报志愿,中考志愿可以填职高吗
- 局域网arp攻击_谈谈电子欺骗中的ARP欺骗
- Alfred上可提高工作效率的Workflow推荐
- 【CSDN英雄会】大众点评黄俊东:Android开发者经验谈
- 伪随机码(verilog)
- 大数据实践项目 Nginx日志分析可视化
- d3中图表大小自适应区域大小
- python语言特点可读性_python语言的特点是什么?python语言好学吗?
- 一个和二维泊松求和有关的公式(推导Ewald级数中有用,运用了2D泊松求和公式,傅里叶变换的位移性质)