From e81e92130b7c14dd729aa0a119dcc81444a7d62d Mon Sep 17 00:00:00 2001 From: "Yangkai.Shen" <237497819@qq.com> Date: Wed, 22 May 2019 19:05:13 +0800 Subject: [PATCH] =?UTF-8?q?:bug:=20=E4=BF=AE=E5=A4=8DQQ=E7=99=BB=E5=BD=95?= =?UTF-8?q?=EF=BC=8C=E8=BF=94=E5=9B=9EAccessToken=E4=BB=A5=E5=8F=8AOpenId?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=A0=BC=E5=BC=8F=E8=A7=A3=E6=9E=90=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../me/zhyd/oauth/request/AuthQqRequest.java | 24 ++++++++++++++----- 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/src/main/java/me/zhyd/oauth/request/AuthQqRequest.java b/src/main/java/me/zhyd/oauth/request/AuthQqRequest.java index c58faf6..fd39087 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthQqRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthQqRequest.java @@ -1,5 +1,6 @@ package me.zhyd.oauth.request; +import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSONObject; @@ -9,9 +10,12 @@ import me.zhyd.oauth.model.AuthSource; import me.zhyd.oauth.model.AuthToken; import me.zhyd.oauth.model.AuthUser; import me.zhyd.oauth.model.AuthUserGender; +import me.zhyd.oauth.utils.GlobalAuthUtil; import me.zhyd.oauth.utils.StringUtils; import me.zhyd.oauth.utils.UrlBuilder; +import java.util.Map; + /** * qq登录 * @@ -26,14 +30,17 @@ public class AuthQqRequest extends BaseAuthRequest { @Override protected AuthToken getAccessToken(String code) { - String accessTokenUrl = UrlBuilder.getQqAccessTokenUrl(config.getClientId(), config.getClientSecret(), code, config.getRedirectUri()); - HttpResponse response = HttpRequest.post(accessTokenUrl).execute(); - JSONObject accessTokenObject = JSONObject.parseObject(response.body()); + String accessTokenUrl = UrlBuilder.getQqAccessTokenUrl(config.getClientId(), config.getClientSecret(), code, config + .getRedirectUri()); + HttpResponse response = HttpRequest.get(accessTokenUrl).execute(); + Map accessTokenObject = GlobalAuthUtil.parseStringToMap(response.body()); if (!accessTokenObject.containsKey("access_token")) { throw new AuthException("Unable to get token from qq using code [" + code + "]"); } return AuthToken.builder() - .accessToken(accessTokenObject.getString("access_token")) + .accessToken(accessTokenObject.get("access_token")) + .expireIn(Integer.valueOf(accessTokenObject.get("expires_in"))) + .refreshToken(accessTokenObject.get("refresh_token")) .build(); } @@ -61,9 +68,14 @@ public class AuthQqRequest extends BaseAuthRequest { } private String getOpenId(String accessToken) { - HttpResponse response = HttpRequest.get(UrlBuilder.getQqOpenidUrl("https://graph.qq.com/oauth2.0/me", accessToken)).execute(); + HttpResponse response = HttpRequest.get(UrlBuilder.getQqOpenidUrl("https://graph.qq.com/oauth2.0/me", accessToken)) + .execute(); if (response.isOk()) { - JSONObject object = JSONObject.parseObject(response.body()); + String body = response.body(); + String removePrefix = StrUtil.replace(body, "callback(", ""); + String removeSuffix = StrUtil.replace(removePrefix, ");", ""); + String openId = StrUtil.trim(removeSuffix); + JSONObject object = JSONObject.parseObject(openId); if (object.containsKey("openid")) { return object.getString("openid"); } -- GitLab