From 66c7455d309bcc2c5aadff91cf35950f335e508d Mon Sep 17 00:00:00 2001
From: "yadong.zhang"
Date: Fri, 6 Sep 2019 16:54:08 +0800
Subject: [PATCH] =?UTF-8?q?:sparkles:=20=E9=9B=86=E6=88=90=E7=BE=8E?=
=?UTF-8?q?=E5=9B=A2=EF=BC=8C=E5=BE=85=E5=8F=91=E5=B8=831.12.0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.en-US.md | 6 +-
README.md | 8 +-
docs/README.md | 5 +-
pom.xml | 2 +-
.../java/me/zhyd/oauth/config/AuthSource.java | 27 +++++
.../oauth/request/AuthMeituanRequest.java | 114 ++++++++++++++++++
6 files changed, 154 insertions(+), 8 deletions(-)
create mode 100644 src/main/java/me/zhyd/oauth/request/AuthMeituanRequest.java
diff --git a/README.en-US.md b/README.en-US.md
index 396d8de..6b6ceff 100644
--- a/README.en-US.md
+++ b/README.en-US.md
@@ -6,7 +6,7 @@
-
+
@@ -15,7 +15,7 @@
-
+
@@ -66,6 +66,7 @@
![](https://gitee.com/yadong.zhang/static/raw/master/JustAuth/csdn.png) |
![](https://gitee.com/yadong.zhang/static/raw/master/JustAuth/kujiale.png) |
![](https://gitee.com/yadong.zhang/static/raw/master/JustAuth/gitlab.png) |
+ ![](https://gitee.com/yadong.zhang/static/raw/master/JustAuth/meituan.png) |
@@ -150,6 +151,7 @@ authRequest.login(callback);
|
| [AuthWeChatEnterpriseRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthWeChatEnterpriseRequest.java) | 参考文档 |
|
| [AuthKujialeRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthKujialeRequest.java) | 参考文档 |
|
| [AuthGitlabRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthGitlabRequest.java) | 参考文档 |
+|
| [AuthMeituanRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthMeituanRequest.java) | 参考文档 |
|
| [AuthCsdnRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthCsdnRequest.java) | 无 |
diff --git a/README.md b/README.md
index 3e9bfdc..f59f473 100644
--- a/README.md
+++ b/README.md
@@ -6,7 +6,7 @@
-
+
@@ -15,7 +15,7 @@
-
+
@@ -66,6 +66,7 @@
![](https://gitee.com/yadong.zhang/static/raw/master/JustAuth/csdn.png) |
![](https://gitee.com/yadong.zhang/static/raw/master/JustAuth/kujiale.png) |
![](https://gitee.com/yadong.zhang/static/raw/master/JustAuth/gitlab.png) |
+ ![](https://gitee.com/yadong.zhang/static/raw/master/JustAuth/meituan.png) |
@@ -93,7 +94,7 @@ JustAuth,如你所见,它仅仅是一个**第三方授权登录**的**工具
me.zhyd.oauth
JustAuth
- 1.11.0
+ 1.12.0
```
- 调用api
@@ -160,6 +161,7 @@ authRequest.login(callback);
|
| [AuthWeChatEnterpriseRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthWeChatEnterpriseRequest.java) | 参考文档 |
|
| [AuthKujialeRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthKujialeRequest.java) | 参考文档 |
|
| [AuthGitlabRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthGitlabRequest.java) | 参考文档 |
+|
| [AuthMeituanRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthMeituanRequest.java) | 参考文档 |
|
| [AuthCsdnRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthCsdnRequest.java) | 无 |
_请知悉:经咨询CSDN官方客服得知,CSDN的授权开放平台已经下线。如果以前申请过的应用,可以继续使用,但是不再支持申请新的应用。so, 本项目中的CSDN登录只能针对少部分用户使用了_
diff --git a/docs/README.md b/docs/README.md
index 748d042..cab35c2 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -9,7 +9,7 @@
-
+
@@ -18,7 +18,7 @@
-
+
@@ -90,6 +90,7 @@ JustAuth,如你所见,它仅仅是一个**第三方授权登录**的**工具
|
| [AuthCsdnRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthCsdnRequest.java) | 无 |
|
| [AuthKujialeRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthKujialeRequest.java) | 参考文档 |
|
| [AuthGitlabRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthGitlabRequest.java) | 参考文档 |
+|
| [AuthMeituanRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthMeituanRequest.java) | 参考文档 |
## 快速开始
diff --git a/pom.xml b/pom.xml
index ad532d2..ecea00e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
me.zhyd.oauth
JustAuth
- 1.11.0
+ 1.12.0
JustAuth
https://gitee.com/yadong.zhang/JustAuth
diff --git a/src/main/java/me/zhyd/oauth/config/AuthSource.java b/src/main/java/me/zhyd/oauth/config/AuthSource.java
index 99d0ed4..ee0c189 100644
--- a/src/main/java/me/zhyd/oauth/config/AuthSource.java
+++ b/src/main/java/me/zhyd/oauth/config/AuthSource.java
@@ -616,6 +616,33 @@ public enum AuthSource {
public String userInfo() {
return "https://gitlab.com/api/v4/user";
}
+ },
+
+ /**
+ * 美团
+ *
+ * @since 1.12.0
+ */
+ MEITUAN {
+ @Override
+ public String authorize() {
+ return "https://openapi.waimai.meituan.com/oauth/authorize";
+ }
+
+ @Override
+ public String accessToken() {
+ return "https://openapi.waimai.meituan.com/oauth/access_token";
+ }
+
+ @Override
+ public String userInfo() {
+ return "https://openapi.waimai.meituan.com/oauth/userinfo";
+ }
+
+ @Override
+ public String refresh() {
+ return "https://openapi.waimai.meituan.com/oauth/refresh_token";
+ }
};
/**
diff --git a/src/main/java/me/zhyd/oauth/request/AuthMeituanRequest.java b/src/main/java/me/zhyd/oauth/request/AuthMeituanRequest.java
new file mode 100644
index 0000000..4ba079c
--- /dev/null
+++ b/src/main/java/me/zhyd/oauth/request/AuthMeituanRequest.java
@@ -0,0 +1,114 @@
+package me.zhyd.oauth.request;
+
+import cn.hutool.http.HttpRequest;
+import cn.hutool.http.HttpResponse;
+import com.alibaba.fastjson.JSONObject;
+import me.zhyd.oauth.cache.AuthStateCache;
+import me.zhyd.oauth.config.AuthConfig;
+import me.zhyd.oauth.config.AuthSource;
+import me.zhyd.oauth.enums.AuthResponseStatus;
+import me.zhyd.oauth.enums.AuthUserGender;
+import me.zhyd.oauth.exception.AuthException;
+import me.zhyd.oauth.model.AuthCallback;
+import me.zhyd.oauth.model.AuthResponse;
+import me.zhyd.oauth.model.AuthToken;
+import me.zhyd.oauth.model.AuthUser;
+import me.zhyd.oauth.utils.UrlBuilder;
+
+/**
+ * 美团登录
+ *
+ * @author yadong.zhang (yadong.zhang0415(a)gmail.com)
+ * @since 1.12.0
+ */
+public class AuthMeituanRequest extends AuthDefaultRequest {
+
+ public AuthMeituanRequest(AuthConfig config) {
+ super(config, AuthSource.MEITUAN);
+ }
+
+ public AuthMeituanRequest(AuthConfig config, AuthStateCache authStateCache) {
+ super(config, AuthSource.MEITUAN, authStateCache);
+ }
+
+ @Override
+ protected AuthToken getAccessToken(AuthCallback authCallback) {
+ HttpResponse response = HttpRequest.post(source.accessToken())
+ .form("app_id", config.getClientId())
+ .form("secret", config.getClientSecret())
+ .form("code", authCallback.getCode())
+ .form("grant_type", "authorization_code")
+ .execute();
+ JSONObject object = JSONObject.parseObject(response.body());
+
+ this.checkResponse(object);
+
+ return AuthToken.builder()
+ .accessToken(object.getString("access_token"))
+ .refreshToken(object.getString("refresh_token"))
+ .expireIn(object.getIntValue("expires_in"))
+ .build();
+ }
+
+ @Override
+ protected AuthUser getUserInfo(AuthToken authToken) {
+ HttpResponse response = HttpRequest.post(source.userInfo())
+ .form("app_id", config.getClientId())
+ .form("secret", config.getClientSecret())
+ .form("access_token", authToken.getAccessToken())
+ .execute();
+ JSONObject object = JSONObject.parseObject(response.body());
+
+ this.checkResponse(object);
+
+ return AuthUser.builder()
+ .uuid(object.getString("openid"))
+ .username(object.getString("nickname"))
+ .nickname(object.getString("nickname"))
+ .avatar(object.getString("avatar"))
+ .gender(AuthUserGender.UNKNOWN)
+ .token(authToken)
+ .source(source)
+ .build();
+ }
+
+ @Override
+ public AuthResponse refresh(AuthToken oldToken) {
+ HttpResponse response = HttpRequest.post(source.accessToken())
+ .form("app_id", config.getClientId())
+ .form("secret", config.getClientSecret())
+ .form("refresh_token", oldToken.getRefreshToken())
+ .form("grant_type", "authorization_code")
+ .execute();
+ JSONObject object = JSONObject.parseObject(response.body());
+
+ this.checkResponse(object);
+
+ return AuthResponse.builder()
+ .code(AuthResponseStatus.SUCCESS.getCode())
+ .data(AuthToken.builder()
+ .accessToken(object.getString("access_token"))
+ .refreshToken(object.getString("refresh_token"))
+ .expireIn(object.getIntValue("expires_in"))
+ .build())
+ .build();
+ }
+
+ private void checkResponse(JSONObject object) {
+ if (object.containsKey("error_code")) {
+ throw new AuthException(object.getString("erroe_msg"));
+ }
+ }
+
+ @Override
+ public String authorize(String state) {
+ return UrlBuilder.fromBaseUrl(source.authorize())
+ .queryParam("response_type", "code")
+ .queryParam("app_id", config.getClientId())
+ .queryParam("redirect_uri", config.getRedirectUri())
+ .queryParam("state", getRealState(state))
+ .queryParam("scope", "")
+ .build();
+ }
+
+}
--
GitLab