网站应用接入QQ登陆(QQ互联)
接入QQ登陆(QQ互联)
官方文档:
https://wiki.connect.qq.com/%e5%87%86%e5%a4%87%e5%b7%a5%e4%bd%9c_oauth2-0
接入步骤:
1. 申请appid和appkey
传送门:https://connect.qq.com/manage.html#/
登陆成功后,创建一个新的应用(网站应用)
申请成功后可以看到:appid 和 appkey
2.放置QQ登陆按钮
1. 下载“QQ登录”按钮图片,并将按钮放置在页面合适的位置
按钮图片下载: 点击这里下载 。按照UI规范,将按钮放置在页面合适的位置:点击这里查看。
2.为“QQ登录”按钮添加前台代码
用户在页面上点击“QQ登录”按钮,将触发QQ登录对话框,效果如下图所示
登陆按钮链接地址:
之后等待审核,审核通过进行第三步
3.使用code获取Access_Token
参数说明:
获取代码
/**
* qq getAccessToken
* @param code
* @return
*/
private String getAccessToken(String code){
CloseableHttpClient client = HttpClients.createDefault();
HttpGet get = new HttpGet(tokenUri + "?grant_type=authorization_code&fmt="+fmt + "&client_id="+appid + "&client_secret="+secret+"&code="+code+"&redirect_uri="+redirectUri);
CloseableHttpResponse response = null;
try {
response = client.execute(get);
HttpEntity entity = response.getEntity();
String data = EntityUtils.toString(entity, "utf8");
return JSON.parseObject(data).getString("access_token");
}catch (IOException ignored){
}finally {
try {
client.close();
if (response != null){
response.close();
}
} catch (IOException ignored) {
}
}
return null;
}
4.获取用户OpenID_OAuth2.0
参数说明:
获取代码
/**
* qq getOpenId
* @return
*/
private String getOpenId(String accessToken){
CloseableHttpClient client = HttpClients.createDefault();
HttpGet get = new HttpGet("https://graph.qq.com/oauth2.0/me?fmt="+fmt +"&access_token="+accessToken);
CloseableHttpResponse response = null;
try {
response = client.execute(get);
HttpEntity entity = response.getEntity();
String data = EntityUtils.toString(entity, "utf8");
return JSON.parseObject(data).getString("openid");
}catch (IOException ignored){
}finally {
try {
client.close();
if (response != null){
response.close();
}
} catch (IOException ignored) {
}
}
return null;
}
5.获取用户信息
参数说明:
获取代码
private JSONObject getUserInfo(String accessToken,String openId){
String u = "https://graph.qq.com/user/get_user_info?access_token=YOUR_ACCESS_TOKEN&oauth_consumer_key=YOUR_APP_ID&openid=YOUR_OPENID";
u = u.replace("YOUR_ACCESS_TOKEN",accessToken).replace("YOUR_APP_ID",appid).replace("YOUR_OPENID",openId);
CloseableHttpClient client = HttpClients.createDefault();
HttpGet get = new HttpGet(u);
CloseableHttpResponse response = null;
try {
response = client.execute(get);
HttpEntity entity = response.getEntity();
String data = EntityUtils.toString(entity, "utf8");
return JSON.parseObject(data);
}catch (IOException ignored){
}finally {
try {
client.close();
if (response != null){
response.close();
}
} catch (IOException ignored) {
}
}
return null;
}
返回示例:
{
"ret":0,
"msg":"",
"nickname":"Peter",
"figureurl":"http://qzapp.qlogo.cn/qzapp/111111/942FEA70050EEAFBD4DCE2C1FC775E56/30",
"figureurl_1":"http://qzapp.qlogo.cn/qzapp/111111/942FEA70050EEAFBD4DCE2C1FC775E56/50",
"figureurl_2":"http://qzapp.qlogo.cn/qzapp/111111/942FEA70050EEAFBD4DCE2C1FC775E56/100",
"figureurl_qq_1":"http://q.qlogo.cn/qqapp/100312990/DE1931D5330620DBD07FB4A5422917B6/40",
"figureurl_qq_2":"http://q.qlogo.cn/qqapp/100312990/DE1931D5330620DBD07FB4A5422917B6/100",
"gender":"男",
"is_yellow_vip":"1",
"vip":"1",
"yellow_vip_level":"7",
"level":"7",
"is_yellow_year_vip":"1"
}
来源:
发布于 2021-02-15 19:30