diff --git a/.gitignore b/.gitignore index ae3f17955223a672784b0520eb8675bef4484c33..4b734638b22db5274e32d443ade2824f9157411a 100644 --- a/.gitignore +++ b/.gitignore @@ -26,5 +26,6 @@ hs_err_pid* .idea *.iml *.sh +bin/* -target \ No newline at end of file +target diff --git a/docs/update.md b/docs/update.md index b546434b490186ac3ae83823a5a56ee8a21639ad..083d050da18a0bc1790bd4c2af4a07b80955e313 100644 --- a/docs/update.md +++ b/docs/update.md @@ -1,16 +1,22 @@ -## v1.1x(未发布) -- 修复抖音登录取值取错层级的问题([issue#I15SIG@Gitee](https://gitee.com/yadong.zhang/JustAuth/issues/I15SIG)) -- 升级相关依赖:lombok@v1.18.10,hutool@5.0.5,fastjson@1.2.62,alipay@4.8.10.ALL([PR#11@Gitee](https://gitee.com/yadong.zhang/JustAuth/pulls/11)) -- 完善异常提示的逻辑,支持传入Source(平台),发生异常时显示对应的source(平台) -- `checkState`方法从`AuthDefaultRequest`中提出到`AuthChecker`中 -- `AuthResponseStatus`枚举类中增加`ILLEGAL_STATUS`、`REQUIRED_REFRESH_TOKEN`两个枚举值 -- `AuthSource`接口中增加`getName`方法,用来对外提供实际`source`的字符串值 -- `AuthWeiboRequest`微博授权登录中实现`revoke`方法,支持手动回收授权 -- 增加微信、QQ、支付宝、微博授权登录的帮助文档 -- [帮助文档](https://docs.justauth.whnb.wang)中增加自定义的404页面 -- [帮助文档](https://docs.justauth.whnb.wang)中增加Gittalk插件 -- [帮助文档](https://docs.justauth.whnb.wang)中增加Java代码高亮的插件 -- [帮助文档](https://docs.justauth.whnb.wang)中修复[腾讯云登录]链接错误的问题 +## v1.13.2 +- 新增 + - 增加微信、QQ、支付宝、微博授权登录的帮助文档 + - 合并[PR#57](https://github.com/justauth/JustAuth/pull/57),增加微信公众号登录 by [@xkcoding](https://github.com/xkcoding) + - [帮助文档](https://docs.justauth.whnb.wang)中增加自定义的404页面 + - [帮助文档](https://docs.justauth.whnb.wang)中增加Gittalk插件 + - [帮助文档](https://docs.justauth.whnb.wang)中增加Java代码高亮的插件 + - 增加`AuthUserGender#getWechatRealGender`方法,兼容获取微信平台的用户性别 +- 修改 + - 修复抖音登录取值取错层级的问题([issue#I15SIG@Gitee](https://gitee.com/yadong.zhang/JustAuth/issues/I15SIG)) + - 完善异常提示的逻辑,支持传入Source(平台),发生异常时显示对应的source(平台) + - `checkState`方法从`AuthDefaultRequest`中提出到`AuthChecker`中 + - `AuthResponseStatus`枚举类中增加`ILLEGAL_STATUS`、`REQUIRED_REFRESH_TOKEN`两个枚举值 + - `AuthSource`接口中增加`getName`方法,用来对外提供实际`source`的字符串值 + - `AuthWeiboRequest`微博授权登录中实现`revoke`方法,支持手动回收授权 + - [帮助文档](https://docs.justauth.whnb.wang)中修复[腾讯云登录]链接错误的问题 +- 升级 + - 升级相关依赖:lombok@v1.18.10,hutool@5.0.5,fastjson@1.2.62,alipay@4.8.10.ALL([PR#11@Gitee](https://gitee.com/yadong.zhang/JustAuth/pulls/11)) + ## v1.13.1 ### 2019/11/12 diff --git a/src/main/java/me/zhyd/oauth/enums/AuthUserGender.java b/src/main/java/me/zhyd/oauth/enums/AuthUserGender.java index 348d520a74274b8a3a0f84bdfa7f11aac0f95d78..fd69deb3b3003d24610c9f5e52eb9c40fbb9878b 100644 --- a/src/main/java/me/zhyd/oauth/enums/AuthUserGender.java +++ b/src/main/java/me/zhyd/oauth/enums/AuthUserGender.java @@ -2,6 +2,7 @@ package me.zhyd.oauth.enums; import lombok.AllArgsConstructor; import lombok.Getter; +import me.zhyd.oauth.utils.StringUtils; import java.util.Arrays; @@ -25,14 +26,34 @@ public enum AuthUserGender { private String code; private String desc; - public static AuthUserGender getRealGender(String code) { - if (null == code || UNKNOWN.getCode().equals(code)) { + /** + * 获取用户的实际性别,常规网站 + * + * @param originalGender 用户第三方标注的原始性别 + * @return 用户性别 + */ + public static AuthUserGender getRealGender(String originalGender) { + if (null == originalGender || UNKNOWN.getCode().equals(originalGender)) { return UNKNOWN; } String[] males = {"m", "男", "1", "male"}; - if (Arrays.asList(males).contains(code.toLowerCase())) { + if (Arrays.asList(males).contains(originalGender.toLowerCase())) { return MALE; } return FEMALE; } + + /** + * 获取微信平台用户的实际性别,0表示未定义,1表示男性,2表示女性 + * + * @param originalGender 用户第三方标注的原始性别 + * @return 用户性别 + * @since 1.13.2 + */ + public static AuthUserGender getWechatRealGender(String originalGender) { + if (StringUtils.isEmpty(originalGender) || "0".equals(originalGender)) { + return AuthUserGender.UNKNOWN; + } + return getRealGender(originalGender); + } } diff --git a/src/main/java/me/zhyd/oauth/request/AuthWeChatEnterpriseRequest.java b/src/main/java/me/zhyd/oauth/request/AuthWeChatEnterpriseRequest.java index f2e2bcb36f7435deafa5e47a8e26212292474ddf..b1d1f7285e23c42050ebe968af940ea94ba6f6a6 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthWeChatEnterpriseRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthWeChatEnterpriseRequest.java @@ -12,6 +12,7 @@ import me.zhyd.oauth.exception.AuthException; import me.zhyd.oauth.model.AuthCallback; import me.zhyd.oauth.model.AuthToken; import me.zhyd.oauth.model.AuthUser; +import me.zhyd.oauth.utils.StringUtils; import me.zhyd.oauth.utils.UrlBuilder; /** @@ -63,8 +64,6 @@ public class AuthWeChatEnterpriseRequest extends AuthDefaultRequest { HttpResponse userDetailResponse = getUserDetail(authToken.getAccessToken(), userId); JSONObject userDetail = this.checkResponse(userDetailResponse); - String gender = getRealGender(userDetail); - return AuthUser.builder() .username(userDetail.getString("name")) .nickname(userDetail.getString("alias")) @@ -72,7 +71,7 @@ public class AuthWeChatEnterpriseRequest extends AuthDefaultRequest { .location(userDetail.getString("address")) .email(userDetail.getString("email")) .uuid(userId) - .gender(AuthUserGender.getRealGender(gender)) + .gender(AuthUserGender.getWechatRealGender(userDetail.getString("gender"))) .token(authToken) .source(source.toString()) .build(); @@ -94,20 +93,6 @@ public class AuthWeChatEnterpriseRequest extends AuthDefaultRequest { return object; } - /** - * 获取用户的实际性别,0表示未定义,1表示男性,2表示女性 - * - * @param userDetail 用户详情 - * @return 用户性别 - */ - private String getRealGender(JSONObject userDetail) { - int gender = userDetail.getIntValue("gender"); - if (AuthUserGender.MALE.getCode() == gender) { - return "1"; - } - return 2 == gender ? "0" : null; - } - /** * 返回带{@code state}参数的授权url,授权回调时会带上这个{@code state} * diff --git a/src/main/java/me/zhyd/oauth/request/AuthWeChatMpRequest.java b/src/main/java/me/zhyd/oauth/request/AuthWeChatMpRequest.java index 35a55e8dd43cf9e6768182aba7b0fd7631a5265c..fcac5d841d3a775f6afa3e8f66a93598567ae1a8 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthWeChatMpRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthWeChatMpRequest.java @@ -63,7 +63,7 @@ public class AuthWeChatMpRequest extends AuthDefaultRequest { .avatar(object.getString("headimgurl")) .location(location) .uuid(openId) - .gender(AuthUserGender.getRealGender(object.getString("sex"))) + .gender(AuthUserGender.getWechatRealGender(object.getString("sex"))) .token(authToken) .source(source.toString()) .build(); diff --git a/src/main/java/me/zhyd/oauth/request/AuthWeChatOpenRequest.java b/src/main/java/me/zhyd/oauth/request/AuthWeChatOpenRequest.java index d46a1fce1618bb93fe4e5b402296ac8815168743..1513677b310ae1ddde6c5e8f1b0815211d6180f7 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthWeChatOpenRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthWeChatOpenRequest.java @@ -62,7 +62,7 @@ public class AuthWeChatOpenRequest extends AuthDefaultRequest { .avatar(object.getString("headimgurl")) .location(location) .uuid(openId) - .gender(AuthUserGender.getRealGender(object.getString("sex"))) + .gender(AuthUserGender.getWechatRealGender(object.getString("sex"))) .token(authToken) .source(source.toString()) .build();