QQ空间扫码登录协议 Java

2023-11-06

运行环境:

服务器:

  • Centos7.6
  • Docker + Mysql

后端:

  • IDEA2019.3.3
  • JDK1.8
  • Maven
  • lombok
  • okhttp
  • SpringBoot
  • fastjson
  • log4j

前端:

  • D2Admin
  • Axios
  • Element

只提供实现思路及部分代码,具体操作看个人发挥,g_tk算法有变化,单靠skey计算无法使用全部接口,部分接口是ok的

运行截图:

 

 

 

 

 

 

// QzoneInterface
package com.hg.QzoneInterafce;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.hg.DataBean.QQCookieBean;
import com.hg.DataBean.QQProfileBean;
import com.hg.DataBean.QQRequestBean;
import com.hg.Lang.QzoneResult;
import com.hg.QzoneUtilBean.QzoneCookieKeyWord;
import com.hg.util.QzoneHelpUtil;

import java.util.List;

/**
 * @ClassName: QzoneInterface
 * @Description: 空间操作接口
 * @Author: CHK141
 * @Date: 2021/2/4/0004 1:48
 * @Mail: chk141@pm.me
 * @Version: 1.0
 */
public interface QzoneInterface {


    // 获取个人信息
    public QQProfileBean GetProfile(QQCookieBean qqCookieBean);

    // 二维码获取账号Cookies/返回JSONObject格式的Cookies数据
    public QzoneResult GetCookies();

    // 获取新的好友请求列表
    public List<QQRequestBean> GetNewFriendsRequestList(QQCookieBean qqCookieBean);

    // 好友请求操作

    /***
     * 好友请求操作
     * @param FriendQQAccount 好友账号
     * @param OperaType 操作类型 Agree=同意,Refuse=拒绝
     * @param RefuseMsg 拒绝附加消息
     * @return 返回JSONObject对象
     */
    public JSONObject FriendsRequestOperat(String FriendQQAccount,String OperaType, String RefuseMsg);


    // 获取好友列表
    public JSONObject GetQQAccountFriendsList();

    // 获取好友总数量
    public JSONObject GetQQAccountFriendsCount();

    // 获取好友分组
    public JSONObject GetQQFriendsGroupingList();

    // 获取群聊列表
    public JSONObject GetQQGroupsList();

    //....


}
// QzoneLoginParameterBean

package com.hg.QzoneUtilBean;

import com.hg.Appliction;
import lombok.Data;
import org.apache.log4j.Logger;

import java.io.InputStream;

/**
 * @ClassName: QzoneLoginBena
 * @Description: TODO
 * @Author: CHK141
 * @Date: 2021/2/4/0004 2:25
 * @Mail: chk141@pm.me
 * @Version: 1.0
 */
@Data
public class QzoneLoginParameterBean {
    private String ptqrtokenen;
    private String qrSign;
    private InputStream QrImageData;
    private Logger log = Logger.getLogger(Appliction.class);
}
// QQLoginBean
package com.hg.DataBean;


import lombok.Data;
import org.apache.ibatis.annotations.Mapper;

/**
 * @ClassName: LoginBean
 * @Description: TODO
 * @Author: CHK141
 * @Date: 2021/2/5/0005 19:26
 * @Mail: chk141@pm.me
 * @Version: 1.0
 */

@Data
@Mapper
public class QQLoginBean {
    // id
    private String id;
    // qq账号
    private String uin;
    // qrSign
    private String qrSign;
    // 二维码地址
    private String qrImageUrl;
    // 状态()
    private String status;
}

 

//QzoneInterfaceImpl


package com.hg.QzoneInterafce;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.hg.DataBean.*;
import com.hg.Lang.QzoneResult;
import com.hg.Mapper.*;
import com.hg.QzoneUtilBean.QzoneHTTPClientBean;
import com.hg.QzoneUtilBean.QzoneCookieKeyWord;
import com.hg.QzoneUtilBean.QzoneLoginParameterBean;
import com.hg.QzoneUtilBean.QzoneNewFriendsRequestBean;
import com.hg.Services.QQLoginService;
import com.hg.Services.QQRequestService;
import com.hg.util.QzoneEncryptUtil;
import com.hg.util.QzoneHelpUtil;
import okhttp3.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import java.io.*;
import java.util.ArrayList;
import java.util.List;

import static com.hg.util.QzoneEncryptUtil.Getptqrtoken;
import static com.hg.util.QzoneHelpUtil.*;

/**
 * @ClassName: QzoneInterfaceImpl
 * @Description: 空间接口实现
 * @Author: CHK141
 * @Date: 2021/2/4/0004 2:00
 * @Mail: chk141@pm.me
 * @Version: 1.0
 */

@Component
public class QzoneInterfaceImpl implements QzoneInterface {
    // Log4j
    private static final Logger log = LoggerFactory.getLogger(QzoneInterfaceImpl.class);
    // 初始化帮助类
    QzoneHel
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QQ空间扫码登录协议 Java 的相关文章

  • 若依tab权限问题

    普通的按钮直接用v hasPermi就可以了 但是这个有个问题 这个东西相当于v show 而像el tab pane就需要v if才能把标签头隐藏 所以需要以下代码 v if checkPermi xxx xxx xxx import c
  • Leetcode算法题:旋转数组问题(全)总结 思路+题解+代码

    旋转数组问题总结 标签 二分查找 翻转数组 笔者在刷LeetCode时多次遇到旋转数组问题 将其各类问题加以总结 从简入深整理出关于旋转数组的全部问题题解思路和代码 希望对读者有所帮助 题目 189 旋转数组 给定一个数组 将数组中的元素向
  • RuoYi -- 字典的前端调用

    前言 记录时间 2022 5 18 内容 字典可以实现枚举联动 前端怎么写去调用呢 我参考company之前项目里的 联赛赛事管理 部分 整理如下 主要包含html js的更新 备注 由于记录时并非边操作边记录 而是抽取往期代码加上自己的理
  • qt之页面布局

    QTlayout概述 Qt的布局管理系统提供了强大的机制来自动排列窗口中的所有部件 确保它们有效地使用空间 Qt包含了一组布局管理类 从而在应用程序的用户界面中对部件进行布局 比如QLayout的几个子类 这里将它们称作布局管理器 所有QW
  • 变差函数拟合(球状、指数、高斯)例题分析matlab

    解决问题的代码 学习笔记 clear clc n 20 h 0 2 f x 1 3 exp 2 x x linspace 0 n h n 第一问 y0 f x 原数据 y f x 0 1 rand size x 加入高斯噪音的数据 Exva
  • 解决报错:Cannot read properties of undefined (reading read ) at FileReader.reader.onload

    当我们使用xlsx插件实现excel导入功能时发现控制台报错 Cannot read properties of undefined reading read at FileReader reader onload 查询后发现是xlsx版本
  • 接口多实现类的动态调用

    一个接口在不同场景 需要有不同的实现类 实现动态调用 定义接口 创建接口实现类 定义支付方式接口 支付方式接口 public interface PaymentService 扫码支付 param transaction return th
  • python 执行js 提示window未定义_execjs执行js出现window对象未定义时的解决

    最近在开始学习js逆向 里面很重要的一个方法就是把js代码扣下来用python模拟执行 但是发现js里面有window对象时用execjs执行 当使用node js环境时会出现window对象未定义的情况 记录下在网上找到的解决方案 1 当
  • 程序员是如何思考的?

    1975 年 弗雷德里克 布鲁克斯 Frederick Brooks 出版了软件行业的名著 人月神话 他给出了一个统计结果 优秀程序员的开发效率是普通程序员的 10 倍 40 多年过去了 这个数字得到了行业的普遍认同 成为优秀程序员是很多程
  • 分析常见数据结构在内存中的存储形式

    本文会在x64dbg中分析vector list map的内存存储特点 目录 分析vector在内存中的存储形式 x32dbg分析vector数组 总结一下vector的内存布局 分析 list 在内存中的存储形式 x32dbg分析 lis
  • 349. Intersection of Two Arrays

    class Solution public vector
  • 微信小程序 禁止ios页面下拉下滑滚动 出现空白的情况

    项目需要做了一个图片拖动指定组件上删除 和排序的功能android测试正常 ios会出现拖动图片页面也跟着下滑的尴尬情况 查文档下拉刷新配置默认是关闭的 后经查找文档发现在本页面page json 配置项可通过 disableScroll
  • 最好的英文词典

    辞典对于学外语的作用 怎么强调也不过分 经常接触英语的人都知道 遇到生词不可怕 可怕的是遇到认识的单词 又不明白这句话什么意思 这个时候 辞典的作用就发挥出来了 今天一位朋友问我一句英文的意思 这是纽约时报关于作家塞林格的一个标题 Stil
  • MySQLdb._exceptions.OperationalError: (1045, “Access denied for user ‘root‘@‘localhost‘ (using passw

    migrate数据到数据库时遇到的错误 MySQLdb exceptions OperationalError 1045 Access denied for user root localhost using password NO 解决方

随机推荐

  • Vscode配置C/C++环境

    2022年9月20日测试配置环境 运行情况良好 第一篇文章 不足之处 敬请海涵 借鉴了一些大神的分享VSCode配置C C 环境 知乎 里面有一些详细的安装教程 我就直接省去了安装的步骤 1 官网下载Vscode 一直点击下一步 直到安装在
  • 二进制安全虚拟机Protostar靶场(3)溢出控制程序指针,基础知识讲解 Stack Three,Stack Four

    前言 这是一个系列文章 之前已经介绍过一些二进制安全的基础知识 这里就不过多重复提及 不熟悉的同学可以去看看我之前写的文章 二进制安全虚拟机Protostar靶场 安装 基础知识讲解 破解STACK ZERO https blog csdn
  • 如何使用 UserAccountControl 标志操纵用户帐户属性

    转载 http support microsoft com kb 305144 概要 在打开用户帐户的属性后 单击帐户选项卡 然后选中或清除 帐户选项 对话框中的复选框 则会将数值分配给 UserAccountControl 属性 分配给该
  • eclipse设置编码格式UTF-8,代码提示设置,显示代码行号,设置字体类型和大小,修改代码签名,配置jdk

    图1 设置编码格式 图2 qwertyuioplkjhgfdsazxcvbnm 图3 显示代码行号 图4 设置代码的字体类型和大小 图5 设置Console 控制台 的字体类型和大小 图6 修改代码签名 图7 eclipse配置JDK 若需
  • k8s集群中部署服务之部署描述文件准备

    微服务部署描述文件Deploy yaml 一 各微服务创建部署描述文件 1 1 mall auth server apiVersion apps v1 kind Deployment metadata name mall auth serv
  • 编译课设 (词法分析+LR1语法分析+语法制导翻译(四元式生成))

    代码已上传至 Github 完整的 VS2019 项目已上传至百度云 提取码 lql1 目录 源语言 语义动作 中间代码定义 整体框架 声明 语句 i f if if 语句
  • JS时间戳和时间之间转换

    一 时间转换时间戳 var date new Date 时间对象 var str date getTime 转换成时间戳 二 时间戳转换为时间 1 转换成形如 2018 年 1 月 4 日 14 00 00 格式 function getD
  • esp32环境安装教程---arduino IDE

    前言 1 最近突然对esp32感兴趣了 源于逛油管的时候 总是看到很多大佬使用esp32cam进行网络图传 做摄像头 个人比较感兴趣 在环境安装过程遇到了很多坑 所以在此跟大家分享一下 2 注意 如果没有魔法的人 本文不用看 因为对你没帮助
  • 使用Javascript(js)技术实现动态时钟效果—北大青鸟

    效果图 代码
  • linux命令大全 find

    参考 linux命令大全 程序员工具箱 1 命令名 find 在某个目录下搜索文件 2 使用样例 在 path 目录下递归找到名字后缀为 access log 的文件 find path name access log 在 path 目录下
  • pandas删除索引具体位置的数据

    import pandas as pd import numpy as np 想删除索引是3 和4的数据 df pd DataFrame 0 我 1 你 2 她 3 我们 5 你们 columns list AB df t df loc d
  • 浪潮 服务器数据安全管理系统,浪潮SSC运维安全管控系统

    浪潮SSC运维安全管控系统提供精细管控 运维无忧的数据中心安全解决方案 统一账号 数据中心内所有各种服务器 数据库 网络设备 中间件 业务系统的账号作为从账号 浪潮SSC的账号作为主账号 进入数据中心的每个运维人员对应一个主账号 主账号用来
  • 卷积:kernel size/padding/stride

    卷积的原理 卷积尺寸变化 输出尺寸 输入尺寸 filter尺寸 2 padding stride 1 宽和高都是这么计算的 输入图片大小为200 200 依次经过一层卷积 kernel size 5 5 padding 1 stride 2
  • 带你解决java内存爆炸和CPU100%的问题

    文章目录 java 内存爆炸 CPU100 问题分析 定位与解决 背景 堆内存溢出 问题思路整理 堆外内存分析 问题思路整理 CPU 100 问题排查 引发原因 java 内存爆炸 CPU100 问题分析 定位与解决 背景 今天给java开
  • Unity半透明物体+投射阴影+接受阴影

    前置 水流动效果 透明 物体实现半透明有透明度测试和透明度混合两种方式 不同方式接受和投射阴影的方式有所差别 透明度测试阴影效果图 正方体的阴影一部分打在了水平面上 一部分在白色平面上 由于透明度测试使得水平面的右半部分为完全透明 所以白色
  • CNVD证书获得及要求

    CNVD证书获得及要求 前言 CNVD证书 简介 要求 挖掘思路 定位目标 搜索案例 漏洞类型 证书展示 文件上传 逻辑漏洞 弱口令 ps 前言 4月份利用闲时时间对学校资产进行了一波渗透测试 发现蛮多的漏洞 这其中就发现了这次证书的漏洞厂
  • 2020-09-10 nginx 流转发 ftp 服务器报错: GnuTLS 错误 -110

    ginx 流转发 ftp 服务器报错 GnuTLS 错误 110 报错信息 filezilla ftp tls 连接 ftp 服务器没问题 访问 nginx 服务 转发到ftp 服务器会报错 如下 错误 GnuTLS 错误 110 位于 g
  • 异常值处理

    异常值处理是数据预处理中的一个重要步骤 随着大数据时代的到来 异常值处理也越来越重要 本文主要总结了一些常用的判断异常值的方法 1 3 准则 要求数据服从正态分布 认为大于 3 或小于 3 的实验数据值作为异常值 其中 为数据均值 为数据标
  • vscode 导入python库_vscode 导入的三方库没有代码提示的问题

    发现在vscode里面 关于tensorflow的内容都不提示 需要一个字母一个字母的敲 在tensorflow包下的 init py文件中定义了一个contrib变量表示tensorflow contrib包下的内容 但是tensorfl
  • QQ空间扫码登录协议 Java

    运行环境 服务器 Centos7 6 Docker Mysql 后端 IDEA2019 3 3 JDK1 8 Maven lombok okhttp SpringBoot fastjson log4j 前端 D2Admin Axios El