Skip to content

Commit 4536a3b

Browse files
committed
bug:钉钉获取企业内部应用的access_token的参数必须是小写的appkey和appsecret
1 parent 49354cd commit 4536a3b

File tree

3 files changed

+12
-29
lines changed

3 files changed

+12
-29
lines changed

Admin.NET/Plugins/Admin.NET.Plugin.DingTalk/Job/SyncDingTalkUserJob.cs

+9-14
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,7 @@ public async Task ExecuteAsync(JobExecutingContext context, CancellationToken st
3838
var _dingTalkUserRepo = serviceScope.ServiceProvider.GetRequiredService<SqlSugarRepository<DingTalkUser>>();
3939
var _dingTalkOptions = serviceScope.ServiceProvider.GetRequiredService<IOptions<DingTalkOptions>>();
4040
// 获取token
41-
var param = new GetDingTalkTokenInput()
42-
{
43-
AppKey = _dingTalkOptions.Value.ClientId,
44-
AppSecret = _dingTalkOptions.Value.ClientSecret
45-
};
46-
var tokenRes = await _dingTalkApi.GetDingTalkToken(param);
41+
var tokenRes = await _dingTalkApi.GetDingTalkToken(_dingTalkOptions.Value.ClientId, _dingTalkOptions.Value.ClientSecret);
4742
if (tokenRes.ErrCode != 0)
4843
{
4944
throw Oops.Oh(tokenRes.ErrMsg);
@@ -99,19 +94,19 @@ public async Task ExecuteAsync(JobExecutingContext context, CancellationToken st
9994
var iDingTalkUser = dingTalkUserList.Where(u => !sysDingTalkUserIdList.Any(d => d.DingTalkUserId == u.UserId));
10095
#region 新增钉钉用户
10196
var iUser = iDingTalkUser
102-
.Select(res => new SysDingTalkUser
97+
.Select(res => new DingTalkUser
10398
{
10499
DingTalkUserId = res.UserId,
105100
Name = res.FieldDataList
106-
.Where(f => f.FieldCode == DingTalkFieldConst.NameField)
101+
.Where(f => f.FieldCode == DingTalkConst.NameField)
107102
.Select(f => f.FieldValueList.Select(v => v.Value).FirstOrDefault())
108103
.FirstOrDefault(),
109104
Mobile = res.FieldDataList
110-
.Where(f => f.FieldCode == DingTalkFieldConst.MobileField)
105+
.Where(f => f.FieldCode == DingTalkConst.MobileField)
111106
.Select(f => f.FieldValueList.Select(v => v.Value).FirstOrDefault())
112107
.FirstOrDefault(),
113108
JobNumber = res.FieldDataList
114-
.Where(f => f.FieldCode == DingTalkFieldConst.JobNumberField)
109+
.Where(f => f.FieldCode == DingTalkConst.JobNumberField)
115110
.Select(f => f.FieldValueList.Select(v => v.Value).FirstOrDefault())
116111
.FirstOrDefault(),
117112
}).ToList();
@@ -127,20 +122,20 @@ public async Task ExecuteAsync(JobExecutingContext context, CancellationToken st
127122

128123
#region 更新钉钉用户
129124
var uUser = uDingTalkUser
130-
.Select(res => new SysDingTalkUser
125+
.Select(res => new DingTalkUser
131126
{
132127
Id = sysDingTalkUserIdList.Where(d => d.DingTalkUserId == res.UserId).Select(d => d.Id).FirstOrDefault(),
133128
DingTalkUserId = res.UserId,
134129
Name = res.FieldDataList
135-
.Where(f => f.FieldCode == DingTalkFieldConst.NameField)
130+
.Where(f => f.FieldCode == DingTalkConst.NameField)
136131
.Select(f => f.FieldValueList.Select(v => v.Value).FirstOrDefault())
137132
.FirstOrDefault(),
138133
Mobile = res.FieldDataList
139-
.Where(f => f.FieldCode == DingTalkFieldConst.MobileField)
134+
.Where(f => f.FieldCode == DingTalkConst.MobileField)
140135
.Select(f => f.FieldValueList.Select(v => v.Value).FirstOrDefault())
141136
.FirstOrDefault(),
142137
JobNumber = res.FieldDataList
143-
.Where(f => f.FieldCode == DingTalkFieldConst.JobNumberField)
138+
.Where(f => f.FieldCode == DingTalkConst.JobNumberField)
144139
.Select(f => f.FieldValueList.Select(v => v.Value).FirstOrDefault())
145140
.FirstOrDefault(),
146141
}).ToList();

Admin.NET/Plugins/Admin.NET.Plugin.DingTalk/Service/Dto/GetDingTalkToken.cs

-12
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,6 @@
88

99
namespace Admin.NET.Plugin.DingTalk;
1010

11-
public class GetDingTalkTokenInput
12-
{
13-
/// <summary>
14-
/// 应用的唯一标识key
15-
/// </summary>
16-
public string AppKey { get; set; }
17-
18-
/// <summary>
19-
/// 应用的密钥。AppKey和AppSecret可在钉钉开发者后台的应用详情页面获取。
20-
/// </summary>
21-
public string AppSecret { get; set; }
22-
}
2311

2412
public class GetDingTalkTokenOutput
2513
{

Admin.NET/Plugins/Admin.NET.Plugin.DingTalk/Service/IDingTalkApi.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,18 @@
66
//
77
// 任何基于本项目二次开发而产生的一切法律纠纷和责任,均与作者无关
88

9-
using Furion.RemoteRequest;
10-
119
namespace Admin.NET.Plugin.DingTalk;
1210

1311
public interface IDingTalkApi : IHttpDispatchProxy
1412
{
1513
/// <summary>
1614
/// 获取企业内部应用的access_token
1715
/// </summary>
16+
/// <param name="appkey">应用的唯一标识key</param>
17+
/// <param name="appsecret"> 应用的密钥。AppKey和AppSecret可在钉钉开发者后台的应用详情页面获取。</param>
1818
/// <returns></returns>
1919
[Get("https://oapi.dingtalk.com/gettoken")]
20-
Task<GetDingTalkTokenOutput> GetDingTalkToken([QueryString] GetDingTalkTokenInput input);
20+
Task<GetDingTalkTokenOutput> GetDingTalkToken([QueryString] string appkey, [QueryString] string appsecret);
2121

2222
/// <summary>
2323
/// 获取在职员工列表

0 commit comments

Comments
 (0)