首页 > 开发 > Java > 正文

Java实现QQ第三方登录的示例代码

2020-07-28 14:20:24
字体:
来源:转载
供稿:网友

前期准备工作

1.云服务器

2.备案的域名

3.本地调试需要修改hosts文件,将域名映射到127.0.0.1

如何修改hosts文件:https://www.jb51.net/diannaojichu/319774.html

申请QQ互联,并成为开发者

申请QQ互联创建应用时需要备案域名,所以建议提前准备备案域名。

QQ互联:https://connect.qq.com/index.html

登录后,点击头像,进入认证页面,填写信息,等待审核。

审核通过后创建应用

应用创建通过审核后,就可以使用APP ID 和 APP Key

前期工作就这些了,后面可以开始写代码了。

项目结构:

properties或者yml配置文件(这里就是简单的配置了一下,可以自行添加数据库等配置)

server.port=80server.servlet.context-path=/ #qq互联qq.oauth.http:QQ互联中申请填写的网站地址

在pom中添加依赖

<!--httpclient--><dependency>  <groupId>org.apache.httpcomponents</groupId>  <artifactId>httpclient</artifactId>  <version>4.5.6</version></dependency><!--阿里 JSON--><dependency>  <groupId>com.alibaba</groupId>  <artifactId>fastjson</artifactId>  <version>1.2.47</version></dependency>

发送QQ登录请求

定义全局变量获取配置文件中的网站地址

@Value("${qq.oauth.http}")private String http;

定义登录回调地址(可以用网站地址拼接或者直接写)

//QQ互联中的回调地址String backUrl = http + "/index";

登录请求方法代码

@GetMapping("/qq/login")public String qq(HttpSession session) throws UnsupportedEncodingException {  //QQ互联中的回调地址  String backUrl = http + "/index";   //用于第三方应用防止CSRF攻击  String uuid = UUID.randomUUID().toString().replaceAll("-","");  session.setAttribute("state",uuid);   //Step1:获取Authorization Code  String url = "https://graph.qq.com/oauth2.0/authorize?response_type=code"+      "&client_&redirect_uri=" + URLEncoder.encode(backUrl, "utf-8") +      "&state=" + uuid;   return "redirect:" + url;}

回调返回参数信息说明:

参数名称 描述
ret 返回码。详见公共返回码说明#OpenAPI V3.0 返回码。
msg 如果错误,返回错误信息。
is_lost 判断是否有数据丢失。如果应用不使用cache,不需要关心此参数。

0或者不返回:没有数据丢失,可以缓存。
1:有部分数据丢失或错误,不要缓存。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表