diff --git a/README.md b/README.md index fe8ea2e98ab78a5b44eb324529ac9242f494ee66..e00b13e95e642987f2effe5f118a722bfce39c1c 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@

- + @@ -68,7 +68,7 @@ JustAuth,如你所见,它仅仅是一个**第三方授权登录**的**工具 me.zhyd.oauth JustAuth - 1.7.0 + 1.7.1 ``` - 调用api @@ -109,7 +109,7 @@ authRequest.login("code"); | | [AuthTaobaoRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthTaobaoRequest.java) | 参考文档 | | | [AuthGoogleRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthGoogleRequest.java) | 参考文档 | | | [AuthFacebookRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthFacebookRequest.java) | 参考文档 | -| | [AuthDouyinRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthDouyinRequest.java) | 参考文档 | +| | [AuthDouyinRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthDouyinRequest.java) | 参考文档 | | | [AuthLinkedinRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthLinkedinRequest.java) | 参考文档 | | | [AuthMicrosoftRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthMicrosoftRequest.java) | 参考文档 | | | [AuthMiRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthMiRequest.java) | 参考文档 | diff --git a/pom.xml b/pom.xml index 4cacc20e1e5f5a2bed16aa2ae25bade7f59cc8f6..826a658c7d6550902a2f1553c24a24fffd021f06 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ me.zhyd.oauth JustAuth - 1.7.0 + 1.7.1 JustAuth https://gitee.com/yadong.zhang/JustAuth diff --git a/src/main/java/me/zhyd/oauth/config/AuthConfig.java b/src/main/java/me/zhyd/oauth/config/AuthConfig.java index 9bf98abe86b44df61330cc3bf8cd8e2c2445aad7..3ea5554abee2c2dd6c8f0a5763e393fff72f24a0 100644 --- a/src/main/java/me/zhyd/oauth/config/AuthConfig.java +++ b/src/main/java/me/zhyd/oauth/config/AuthConfig.java @@ -35,4 +35,11 @@ public class AuthConfig { * 支付宝公钥:当选择支付宝登录时,该值可用 */ private String alipayPublicKey; + + /** + * 是否需要申请unionid,目前只针对qq登录 + * 注:qq授权登录时,获取unionid需要单独发送邮件申请权限。如果个人开发者账号中申请了该权限,可以将该值置为true,在获取openId时就会同步获取unionId + * 参考链接:http://wiki.connect.qq.com/unionid%E4%BB%8B%E7%BB%8D + */ + private boolean unionId; } diff --git a/src/main/java/me/zhyd/oauth/request/AuthQqRequest.java b/src/main/java/me/zhyd/oauth/request/AuthQqRequest.java index d9ad586eb93970951812f4830a73dc36772d2fc4..b0e29154ab14b7973089151b80c7358865cdb169 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthQqRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthQqRequest.java @@ -85,7 +85,7 @@ public class AuthQqRequest extends BaseAuthRequest { private String getOpenId(AuthToken authToken) { String accessToken = authToken.getAccessToken(); - HttpResponse response = HttpRequest.get(UrlBuilder.getQqOpenidUrl("https://graph.qq.com/oauth2.0/me", accessToken)) + HttpResponse response = HttpRequest.get(UrlBuilder.getQqOpenidUrl("https://graph.qq.com/oauth2.0/me", accessToken, config.isUnionId())) .execute(); if (response.isOk()) { String body = response.body(); @@ -97,7 +97,9 @@ public class AuthQqRequest extends BaseAuthRequest { throw new AuthException(object.get("error") + ":" + object.get("error_description")); } authToken.setOpenId(object.getString("openid")); - authToken.setUnionId(object.getString("unionid")); + if (object.containsKey("unionid")) { + authToken.setUnionId(object.getString("unionid")); + } return StringUtils.isEmpty(authToken.getUnionId()) ? authToken.getOpenId() : authToken.getUnionId(); } diff --git a/src/main/java/me/zhyd/oauth/utils/UrlBuilder.java b/src/main/java/me/zhyd/oauth/utils/UrlBuilder.java index 585d1c88d8586cd58edc9b96f4d3c8cfb5ae16d5..7c8ed1e265dfdf3f1855b5ed3493ec64e0be5e4f 100644 --- a/src/main/java/me/zhyd/oauth/utils/UrlBuilder.java +++ b/src/main/java/me/zhyd/oauth/utils/UrlBuilder.java @@ -58,7 +58,7 @@ public class UrlBuilder { private static final String QQ_ACCESS_TOKEN_PATTERN = "{0}?client_id={1}&client_secret={2}&grant_type=authorization_code&code={3}&redirect_uri={4}"; private static final String QQ_USER_INFO_PATTERN = "{0}?oauth_consumer_key={1}&access_token={2}&openid={3}"; private static final String QQ_AUTHORIZE_PATTERN = "{0}?client_id={1}&response_type=code&redirect_uri={2}&state={3}"; - private static final String QQ_OPENID_PATTERN = "{0}?access_token={1}&unionid=1"; + private static final String QQ_OPENID_PATTERN = "{0}?access_token={1}&unionid={2}"; private static final String WECHAT_AUTHORIZE_PATTERN = "{0}?appid={1}&redirect_uri={2}&response_type=code&scope=snsapi_login&state={3}#wechat_redirect"; private static final String WECHAT_ACCESS_TOKEN_PATTERN = "{0}?appid={1}&secret={2}&code={3}&grant_type=authorization_code"; @@ -438,12 +438,13 @@ public class UrlBuilder { /** * 获取qq授权地址 * - * @param url 获取qqopenid的api接口地址 - * @param token qq 应用授权的token + * @param url 获取qqopenid的api接口地址 + * @param token qq 应用授权的token + * @param unionid 是否需要获取unionid,默认为false。注:获取unionid需要单独发送邮件申请权限,请个人视情况而定。参考链接:http://wiki.connect.qq.com/unionid%E4%BB%8B%E7%BB%8D * @return full url */ - public static String getQqOpenidUrl(String url, String token) { - return MessageFormat.format(QQ_OPENID_PATTERN, url, token); + public static String getQqOpenidUrl(String url, String token, boolean unionid) { + return MessageFormat.format(QQ_OPENID_PATTERN, url, token, unionid ? 1 : 0); } /** diff --git a/update.md b/update.md index 74417057d4f22d8b21408dafe60781c3187fab53..3a37de9147be7893510fb84e5bc988ada338067b 100644 --- a/update.md +++ b/update.md @@ -1,3 +1,6 @@ +### 2019/06/25 +qq授权登录时,需要获取`openId`作为`uuid`,在`1.6.1-beta`和`1.7.0`版本中,引入了`unionId`这一属性。获取`unionid`需要单独向qq团队**发送邮件**申请权限,鉴于这一申请权限的步骤比较麻烦(需要填写的内容比较多),所以在`AuthConfig`中增加了一个`unionId`属性,当为**true**时才会获取unionid,当为false时只获取openId。如果你需要该功能, 则在自行申请了相关权限后,将该属性置为true即可。关于unionId的参考链接:[UnionID介绍](http://wiki.connect.qq.com/unionid%E4%BB%8B%E7%BB%8D) + ### 2019/06/19 1. 合并[xkcoding](https://github.com/xkcoding)提交的[PR](https://github.com/zhangyd-c/JustAuth/pull/14),重构了部分代码,jar包由原来的`130+kb`优化到现在的`110+kb` 2. 合并[skqing](https://gitee.com/skqing)提交的[PR](https://gitee.com/yadong.zhang/JustAuth/pulls/3), 解决抖音登录失败问题