java授权登录_QQ第三方授权登录OAuth2.0实现(Java)

本文详细介绍了如何使用Java实现QQ第三方授权登录OAuth2.0,包括创建应用、设置回调地址、获取授权页面URL、处理授权码、获取Access Token、OpenID以及用户信息。通过示例代码展示了从登录到注册或登录用户的完整流程。
摘要由CSDN通过智能技术生成

准备材料

1.已经备案好的域名

2.服务器(域名和服务器为统一主体或域名已接入服务器)

3.QQ号

创建应用

2.创建网站应用,填写网站基本信息以及平台信息,提交审核。注:网站回调域后续会用到,是点击授权登录时回调地址,需要与后续开发一致。

程序开发

1. 添加QQ登录按钮,用于点击跳转至QQ授权登录页

class="fa fa-qq">

2. Java后台实现页面跳转

2.1 编写一个工具类

QQUtil

package cn.zwqh.springboot.common.qq;

import java.io.IOException;

import java.net.URLEncoder;

import org.apache.http.client.ClientProtocolException;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import com.alibaba.fastjson.JSON;

import com.alibaba.fastjson.JSONException;

import com.alibaba.fastjson.JSONObject;

import cn.zwqh.springboot.common.http.HttpClientUtils;

import cn.zwqh.springboot.entity.sys.User;

public class QQUtil {

private static final Logger log = LoggerFactory.getLogger(QQUtil.class);

private static final String QQ_APP_ID="XXX";//改成自己的

private static final String QQ_APP_SECRET="XXX";//改成自己的

private static final String LOGIN_REDIRECT_URI="https://www.zwqh.top/account/qqLogin";//改成自己的

private static final String BIND_REDIRECT_URI="https://www.zwqh.top/account/qqBind"; //改成自己的

private static final String AUTH_CODE_URL="https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id="+QQ_APP_ID+"&redirect_uri=REDIRECT_URI&state=STATE";

private static final String ACCESS_TOKEN_URL="https://graph.qq.com/oauth2.0/token?client_id="+QQ_APP_ID+"&client_secret="+QQ_APP_SECRET+"&code=CODE&grant_type=authorization_code&redirect_uri=REDIRECT_URI";

private static final String REFRESH_TOKEN_URL="https://graph.qq.com/oauth2.0/token?client_id="+QQ_APP_ID+"&client_secret="+QQ_APP_SECRET+"&grant_type=refresh_token&refresh_token=REFRESH_TOKEN";

private static final String OPEN_ID_URL="https://graph.qq.com/oauth2.0/me?access_token=ACCESS_TOKEN";

private static final String USER_INFO_URL="https://graph.qq.com/user/get_user_info?access_token=ACCESS_TOKEN&oauth_consumer_key="+QQ_APP_ID+"&openid=OPENID";

public static JSONObject getJsonStrByQueryUrl(String paramStr){

String[] params = paramStr.split("&");

JSONObject obj = new JSONObject();

for (int i = 0; i < params.length; i++) {

String[] param = params[i].split("=");

if (param.length >= 2) {

String key = param[0];

String value = param[1];

for (int j = 2; j < param.length; j++) {

value += "=" + param[j];

}

try {

obj.put(key,value);

} catch (JSONException e) {

e.printStackTrace();

}

}

}

return obj;

}

/**

* 获取授权登录页码url

* @return

*/

public static String getLoginConnectUrl(String state) {

String url=null;

try{

url=AUTH_CODE_URL.replace("REDIRECT_URI", URLEncoder.encode(LOGIN_REDIRECT_URI, "utf-8")).replace("STATE", state);

}catch (Exception e) {

log.error(e.toString());

}

return url;

}

/**

* 获取授权绑定页码url

* @return

*/

public static String getBindConnectUrl() { </

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值