Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OnlyOne_X
JustAuth
提交
82358cbd
J
JustAuth
项目概览
OnlyOne_X
/
JustAuth
与 Fork 源项目一致
Fork自
justauth / JustAuth
通知
1
Star
1
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,发现更多精彩内容 >>
提交
82358cbd
编写于
6月 18, 2019
作者:
智布道
👁
提交者:
Gitee
6月 18, 2019
浏览文件
操作
浏览文件
下载
差异文件
!1 修复钉钉回调JSON解析用户信息异常问题
Merge pull request !1 from skqing/master
上级
937fba37
56df9bc1
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
14 addition
and
9 deletion
+14
-9
src/main/java/me/zhyd/oauth/request/AuthDingTalkRequest.java
src/main/java/me/zhyd/oauth/request/AuthDingTalkRequest.java
+14
-9
未找到文件。
src/main/java/me/zhyd/oauth/request/AuthDingTalkRequest.java
浏览文件 @
82358cbd
...
...
@@ -2,7 +2,8 @@ package me.zhyd.oauth.request;
import
cn.hutool.http.HttpRequest
;
import
cn.hutool.http.HttpResponse
;
import
cn.hutool.json.JSONObject
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
me.zhyd.oauth.config.AuthConfig
;
import
me.zhyd.oauth.exception.AuthException
;
import
me.zhyd.oauth.model.AuthDingTalkErrorCode
;
...
...
@@ -12,8 +13,6 @@ import me.zhyd.oauth.model.AuthUser;
import
me.zhyd.oauth.utils.GlobalAuthUtil
;
import
me.zhyd.oauth.utils.UrlBuilder
;
import
java.util.Objects
;
/**
* 钉钉登录
*
...
...
@@ -40,21 +39,27 @@ public class AuthDingTalkRequest extends BaseAuthRequest {
// 根据timestamp, appSecret计算签名值
String
stringToSign
=
System
.
currentTimeMillis
()
+
""
;
String
urlEncodeSignature
=
GlobalAuthUtil
.
generateDingTalkSignature
(
config
.
getClientSecret
(),
stringToSign
);
JSONObject
param
=
new
JSONObject
();
param
.
put
(
"tmp_auth_code"
,
code
);
HttpResponse
response
=
HttpRequest
.
post
(
UrlBuilder
.
getDingTalkUserInfoUrl
(
urlEncodeSignature
,
stringToSign
,
config
.
getClientId
()))
.
body
(
Objects
.
requireNonNull
(
new
JSONObject
().
put
(
"tmp_auth_code"
,
code
)
))
.
body
(
param
.
toJSONString
(
))
.
execute
();
String
userInfo
=
response
.
body
();
JSONObject
object
=
new
JSON
Object
(
userInfo
);
AuthDingTalkErrorCode
errorCode
=
AuthDingTalkErrorCode
.
getErrorCode
(
object
.
getInt
(
"errcode"
));
JSONObject
object
=
JSON
.
parse
Object
(
userInfo
);
AuthDingTalkErrorCode
errorCode
=
AuthDingTalkErrorCode
.
getErrorCode
(
object
.
getInt
Value
(
"errcode"
));
if
(!
AuthDingTalkErrorCode
.
EC0
.
equals
(
errorCode
))
{
throw
new
AuthException
(
errorCode
.
getDesc
());
}
object
=
object
.
getJSONObject
(
"user_info"
);
AuthToken
token
=
AuthToken
.
builder
()
.
openId
(
object
.
getString
(
"openid"
))
.
build
();
return
AuthUser
.
builder
()
.
uuid
(
object
.
getStr
(
"ope
nid"
))
.
nickname
(
object
.
getStr
(
"nick"
))
.
username
(
object
.
getStr
(
"nick"
))
.
uuid
(
object
.
getStr
ing
(
"unio
nid"
))
.
nickname
(
object
.
getStr
ing
(
"nick"
))
.
username
(
object
.
getStr
ing
(
"nick"
))
.
source
(
AuthSource
.
DINGTALK
)
.
token
(
token
)
.
build
();
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录