运行环境:
服务器:
- 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: [email protected]
* @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: [email protected]
* @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: [email protected]
* @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: [email protected]
* @Version: 1.0
*/
@Component
public class QzoneInterfaceImpl implements QzoneInterface {
// Log4j
private static final Logger log = LoggerFactory.getLogger(QzoneInterfaceImpl.class);
// 初始化帮助类
QzoneHel