Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
My_csdo
JustAuth
提交
8520d0b2
J
JustAuth
项目概览
My_csdo
/
JustAuth
与 Fork 源项目一致
Fork自
justauth / JustAuth
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
J
JustAuth
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
8520d0b2
编写于
5月 17, 2019
作者:
智布道
👁
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
💡
修改注释,增加QQ登录支持
上级
755b72de
变更
15
隐藏空白更改
内联
并排
Showing
15 changed file
with
174 addition
and
3 deletion
+174
-3
README.md
README.md
+3
-3
src/main/java/me/zhyd/oauth/consts/ApiUrl.java
src/main/java/me/zhyd/oauth/consts/ApiUrl.java
+29
-0
src/main/java/me/zhyd/oauth/request/AuthAlipayRequest.java
src/main/java/me/zhyd/oauth/request/AuthAlipayRequest.java
+2
-0
src/main/java/me/zhyd/oauth/request/AuthBaiduRequest.java
src/main/java/me/zhyd/oauth/request/AuthBaiduRequest.java
+2
-0
src/main/java/me/zhyd/oauth/request/AuthCodingRequest.java
src/main/java/me/zhyd/oauth/request/AuthCodingRequest.java
+2
-0
src/main/java/me/zhyd/oauth/request/AuthCsdnRequest.java
src/main/java/me/zhyd/oauth/request/AuthCsdnRequest.java
+2
-0
src/main/java/me/zhyd/oauth/request/AuthDingTalkRequest.java
src/main/java/me/zhyd/oauth/request/AuthDingTalkRequest.java
+2
-0
src/main/java/me/zhyd/oauth/request/AuthGiteeRequest.java
src/main/java/me/zhyd/oauth/request/AuthGiteeRequest.java
+2
-0
src/main/java/me/zhyd/oauth/request/AuthGithubRequest.java
src/main/java/me/zhyd/oauth/request/AuthGithubRequest.java
+2
-0
src/main/java/me/zhyd/oauth/request/AuthOschinaRequest.java
src/main/java/me/zhyd/oauth/request/AuthOschinaRequest.java
+2
-0
src/main/java/me/zhyd/oauth/request/AuthQqRequest.java
src/main/java/me/zhyd/oauth/request/AuthQqRequest.java
+70
-0
src/main/java/me/zhyd/oauth/request/AuthTencentCloudRequest.java
...n/java/me/zhyd/oauth/request/AuthTencentCloudRequest.java
+2
-0
src/main/java/me/zhyd/oauth/request/AuthWeiboRequest.java
src/main/java/me/zhyd/oauth/request/AuthWeiboRequest.java
+2
-0
src/main/java/me/zhyd/oauth/request/BaseAuthRequest.java
src/main/java/me/zhyd/oauth/request/BaseAuthRequest.java
+1
-0
src/main/java/me/zhyd/oauth/utils/UrlBuilder.java
src/main/java/me/zhyd/oauth/utils/UrlBuilder.java
+51
-0
未找到文件。
README.md
浏览文件 @
8520d0b2
...
...
@@ -101,8 +101,8 @@ authRequest.login("code");
|
<img
src=
"https://gitee.com/yadong.zhang/static/raw/master/JustAuth/tencent_cloud.png"
width=
"25"
>
|
[
AuthTencentCloudRequest
](
https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthTencentCloudRequest.java
)
|
<a
href=
"https://dev.tencent.com/help/doc/faq/b4e5b7aee786/oauth"
target=
"_blank"
>
参考文档
</a>
|
|
<img
src=
"https://gitee.com/yadong.zhang/static/raw/master/JustAuth/oschinas.png"
width=
"20"
>
|
[
AuthOschinaRequest
](
https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthOschinaRequest.java
)
|
<a
href=
"https://www.oschina.net/openapi/docs/openapi_user"
target=
"_blank"
>
参考文档
</a>
|
|
<img
src=
"https://gitee.com/yadong.zhang/static/raw/master/JustAuth/alipay.png"
width=
"20"
>
|
[
AuthAlipayRequest
](
https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthAlipayRequest.java
)
|
<a
href=
"https://alipay.open.taobao.com/docs/doc.htm?spm=a219a.7629140.0.0.336d4b70GUKXOl&treeId=193&articleId=105809&docType=1"
target=
"_blank"
>
参考文档
</a>
|
|
<img
src=
"https://gitee.com/yadong.zhang/static/raw/master/JustAuth/qq.png"
width=
"20"
>
|
[
AuthQqRequest
](
https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthQqRequest.java
)
|
<a
href=
"http://wiki.connect.qq.com/"
target=
"_blank"
>
参考文档
</a>
|
|
<img
src=
"https://gitee.com/yadong.zhang/static/raw/master/JustAuth/csdn.png"
width=
"20"
>
|
[
AuthCsdnRequest
](
https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthCsdnRequest.java
)
| 待续 |
|
<img
src=
"https://gitee.com/yadong.zhang/static/raw/master/JustAuth/qq.png"
width=
"20"
>
| AuthQqRequest |
<a
href=
"https://connect.qq.com/"
target=
"_blank"
>
参考文档
</a>
|
|
<img
src=
"https://gitee.com/yadong.zhang/static/raw/master/JustAuth/wechats.png"
width=
"20"
>
| AuthWechatRequest | 待续 |
## 后续开发计划
...
...
@@ -156,11 +156,11 @@ authRequest.login("code");
![
授权支付宝登录
](
https://images.gitee.com/uploads/images/2019/0327/183654_3d4b94eb_784199.png
"授权支付宝登录"
)
#### 授权
csdn
#### 授权
qq
待续
#### 授权
qq
#### 授权
csdn
待续
...
...
src/main/java/me/zhyd/oauth/consts/ApiUrl.java
浏览文件 @
8520d0b2
...
...
@@ -296,6 +296,35 @@ public enum ApiUrl {
throw
new
AuthException
(
ResponseStatus
.
UNSUPPORTED
);
}
@Override
public
String
refresh
()
{
throw
new
AuthException
(
ResponseStatus
.
UNSUPPORTED
);
}
},
/**
* QQ
*/
QQ
{
@Override
public
String
authorize
()
{
return
"https://graph.qq.com/oauth2.0/authorize"
;
}
@Override
public
String
accessToken
()
{
return
"https://graph.qq.com/oauth2.0/token"
;
}
@Override
public
String
userInfo
()
{
return
"https://graph.qq.com/user/get_user_info"
;
}
@Override
public
String
revoke
()
{
throw
new
AuthException
(
ResponseStatus
.
UNSUPPORTED
);
}
@Override
public
String
refresh
()
{
throw
new
AuthException
(
ResponseStatus
.
UNSUPPORTED
);
...
...
src/main/java/me/zhyd/oauth/request/AuthAlipayRequest.java
浏览文件 @
8520d0b2
...
...
@@ -16,6 +16,8 @@ import me.zhyd.oauth.model.AuthUserGender;
import
me.zhyd.oauth.utils.StringUtils
;
/**
* 支付宝登录
*
* @author yadong.zhang (yadong.zhang0415(a)gmail.com)
* @version 1.0
* @since 1.8
...
...
src/main/java/me/zhyd/oauth/request/AuthBaiduRequest.java
浏览文件 @
8520d0b2
...
...
@@ -9,6 +9,8 @@ import me.zhyd.oauth.model.*;
import
me.zhyd.oauth.utils.UrlBuilder
;
/**
* 百度账号登录
*
* @author yadong.zhang (yadong.zhang0415(a)gmail.com)
* @version 1.0
* @since 1.8
...
...
src/main/java/me/zhyd/oauth/request/AuthCodingRequest.java
浏览文件 @
8520d0b2
...
...
@@ -11,6 +11,8 @@ import me.zhyd.oauth.model.AuthUserGender;
import
me.zhyd.oauth.utils.UrlBuilder
;
/**
* Cooding登录
*
* @author yadong.zhang (yadong.zhang0415(a)gmail.com)
* @version 1.0
* @since 1.8
...
...
src/main/java/me/zhyd/oauth/request/AuthCsdnRequest.java
浏览文件 @
8520d0b2
...
...
@@ -10,6 +10,8 @@ import me.zhyd.oauth.model.AuthUser;
import
me.zhyd.oauth.utils.UrlBuilder
;
/**
* CSDN登录
*
* @author yadong.zhang (yadong.zhang0415(a)gmail.com)
* @version 1.0
* @since 1.8
...
...
src/main/java/me/zhyd/oauth/request/AuthDingTalkRequest.java
浏览文件 @
8520d0b2
...
...
@@ -15,6 +15,8 @@ import me.zhyd.oauth.utils.UrlBuilder;
import
java.util.Objects
;
/**
* 钉钉登录
*
* @author yadong.zhang (yadong.zhang0415(a)gmail.com)
* @version 1.0
* @since 1.8
...
...
src/main/java/me/zhyd/oauth/request/AuthGiteeRequest.java
浏览文件 @
8520d0b2
...
...
@@ -10,6 +10,8 @@ import me.zhyd.oauth.model.AuthUser;
import
me.zhyd.oauth.utils.UrlBuilder
;
/**
* Gitee登录
*
* @author yadong.zhang (yadong.zhang0415(a)gmail.com)
* @version 1.0
* @since 1.8
...
...
src/main/java/me/zhyd/oauth/request/AuthGithubRequest.java
浏览文件 @
8520d0b2
...
...
@@ -13,6 +13,8 @@ import me.zhyd.oauth.utils.UrlBuilder;
import
java.util.Map
;
/**
* Github登录
*
* @author yadong.zhang (yadong.zhang0415(a)gmail.com)
* @version 1.0
* @since 1.8
...
...
src/main/java/me/zhyd/oauth/request/AuthOschinaRequest.java
浏览文件 @
8520d0b2
...
...
@@ -11,6 +11,8 @@ import me.zhyd.oauth.model.AuthUserGender;
import
me.zhyd.oauth.utils.UrlBuilder
;
/**
* oschina登录
*
* @author yadong.zhang (yadong.zhang0415(a)gmail.com)
* @version 1.0
* @since 1.8
...
...
src/main/java/me/zhyd/oauth/request/AuthQqRequest.java
0 → 100644
浏览文件 @
8520d0b2
package
me.zhyd.oauth.request
;
import
cn.hutool.http.HttpRequest
;
import
cn.hutool.http.HttpResponse
;
import
com.alibaba.fastjson.JSONObject
;
import
me.zhyd.oauth.config.AuthConfig
;
import
me.zhyd.oauth.exception.AuthException
;
import
me.zhyd.oauth.model.AuthSource
;
import
me.zhyd.oauth.model.AuthUser
;
import
me.zhyd.oauth.model.AuthUserGender
;
import
me.zhyd.oauth.utils.StringUtils
;
import
me.zhyd.oauth.utils.UrlBuilder
;
/**
* qq登录
*
* @author yadong.zhang (yadong.zhang0415(a)gmail.com)
* @version 1.0
* @since 1.8
*/
public
class
AuthQqRequest
extends
BaseAuthRequest
{
public
AuthQqRequest
(
AuthConfig
config
)
{
super
(
config
,
AuthSource
.
QQ
);
}
@Override
protected
String
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
());
if
(!
accessTokenObject
.
containsKey
(
"access_token"
))
{
throw
new
AuthException
(
"Unable to get token from qq using code ["
+
code
+
"]"
);
}
return
accessTokenObject
.
getString
(
"access_token"
);
}
@Override
protected
AuthUser
getUserInfo
(
String
accessToken
)
{
String
openId
=
this
.
getOpenId
(
accessToken
);
HttpResponse
response
=
HttpRequest
.
get
(
UrlBuilder
.
getQqUserInfoUrl
(
accessToken
,
openId
)).
execute
();
JSONObject
object
=
JSONObject
.
parseObject
(
response
.
body
());
if
(
object
.
getIntValue
(
"ret"
)
!=
0
)
{
throw
new
AuthException
(
object
.
getString
(
"msg"
));
}
String
avatar
=
object
.
getString
(
"figureurl_qq_2"
);
if
(
StringUtils
.
isEmpty
(
avatar
))
{
avatar
=
object
.
getString
(
"figureurl_qq_1"
);
}
return
AuthUser
.
builder
()
.
username
(
object
.
getString
(
"nickname"
))
.
nickname
(
object
.
getString
(
"nickname"
))
.
avatar
(
avatar
)
.
gender
(
AuthUserGender
.
getRealGender
(
object
.
getString
(
"gender"
)))
.
accessToken
(
accessToken
)
.
source
(
AuthSource
.
QQ
)
.
build
();
}
private
String
getOpenId
(
String
accessToken
)
{
HttpResponse
response
=
HttpRequest
.
get
(
UrlBuilder
.
getQqOpenidUrl
(
"https://graph.qq.com/oauth2.0/me"
,
accessToken
)).
execute
();
if
(
response
.
isOk
())
{
JSONObject
object
=
JSONObject
.
parseObject
(
response
.
body
());
if
(
object
.
containsKey
(
"openid"
))
{
return
object
.
getString
(
"openid"
);
}
throw
new
AuthException
(
"Invalid openId"
);
}
throw
new
AuthException
(
"Invalid openId"
);
}
}
src/main/java/me/zhyd/oauth/request/AuthTencentCloudRequest.java
浏览文件 @
8520d0b2
...
...
@@ -11,6 +11,8 @@ import me.zhyd.oauth.model.AuthUserGender;
import
me.zhyd.oauth.utils.UrlBuilder
;
/**
* 腾讯云登录
*
* @author yadong.zhang (yadong.zhang0415(a)gmail.com)
* @version 1.0
* @since 1.8
...
...
src/main/java/me/zhyd/oauth/request/AuthWeiboRequest.java
浏览文件 @
8520d0b2
...
...
@@ -15,6 +15,8 @@ import me.zhyd.oauth.utils.UrlBuilder;
/**
* 微博登录
*
* @author yadong.zhang (yadong.zhang0415(a)gmail.com)
* @version 1.0
* @since 1.8
...
...
src/main/java/me/zhyd/oauth/request/BaseAuthRequest.java
浏览文件 @
8520d0b2
...
...
@@ -76,6 +76,7 @@ public abstract class BaseAuthRequest implements AuthRequest {
authorizeUrl
=
UrlBuilder
.
getAlipayAuthorizeUrl
(
config
.
getClientId
(),
config
.
getRedirectUri
());
break
;
case
QQ:
authorizeUrl
=
UrlBuilder
.
getQqAuthorizeUrl
(
config
.
getClientId
(),
config
.
getRedirectUri
());
break
;
case
WECHAT:
break
;
...
...
src/main/java/me/zhyd/oauth/utils/UrlBuilder.java
浏览文件 @
8520d0b2
...
...
@@ -51,6 +51,11 @@ public class UrlBuilder {
private
static
final
String
ALIPAY_AUTHORIZE_PATTERN
=
"{0}?app_id={1}&scope=auth_user&redirect_uri={2}&state=init"
;
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}?access_token={1}&oauth_consumer_key=12345&openid={2}"
;
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}"
;
/**
* 获取githubtoken的接口地址
*
...
...
@@ -354,6 +359,52 @@ public class UrlBuilder {
return
MessageFormat
.
format
(
OSCHINA_AUTHORIZE_PATTERN
,
ApiUrl
.
OSCHINA
.
authorize
(),
clientId
,
redirectUrl
);
}
/**
* 获取qq token的接口地址
*
* @param clientId qq应用的App Key
* @param clientSecret qq应用的App Secret
* @param code qq授权前的code,用来换token
* @param redirectUri 待跳转的页面
* @return full url
*/
public
static
String
getQqAccessTokenUrl
(
String
clientId
,
String
clientSecret
,
String
code
,
String
redirectUri
)
{
return
MessageFormat
.
format
(
QQ_ACCESS_TOKEN_PATTERN
,
ApiUrl
.
QQ
.
accessToken
(),
clientId
,
clientSecret
,
code
,
redirectUri
);
}
/**
* 获取qq用户详情的接口地址
*
* @param token qq 应用的token
* @param openId qq 应用的openId
* @return full url
*/
public
static
String
getQqUserInfoUrl
(
String
token
,
String
openId
)
{
return
MessageFormat
.
format
(
QQ_USER_INFO_PATTERN
,
ApiUrl
.
QQ
.
userInfo
(),
token
,
openId
);
}
/**
* 获取qq授权地址
*
* @param clientId qq 应用的Client ID
* @param redirectUrl qq 应用授权成功后的回调地址
* @return full url
*/
public
static
String
getQqAuthorizeUrl
(
String
clientId
,
String
redirectUrl
)
{
return
MessageFormat
.
format
(
QQ_AUTHORIZE_PATTERN
,
ApiUrl
.
QQ
.
authorize
(),
clientId
,
redirectUrl
,
System
.
currentTimeMillis
());
}
/**
* 获取qq授权地址
*
* @param url 获取qqopenid的api接口地址
* @param token qq 应用授权的token
* @return full url
*/
public
static
String
getQqOpenidUrl
(
String
url
,
String
token
)
{
return
MessageFormat
.
format
(
QQ_OPENID_PATTERN
,
url
,
token
);
}
/**
* 获取alipay授权地址
*
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录