You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
2.6 KiB
45 lines
2.6 KiB
|
3 weeks ago
|
# 钉钉同步失败诊断:对比新旧 token、不同旧版 topapi 接口的可用性
|
||
|
|
$appKey = "ding4eootvq4jzas96lr"
|
||
|
|
$appSecret = "UI6XcD8GFPE_W_yo2eQkMuoSsTEf1whpZYEXrsDA7CV7bkJp40B3VNcETWS1aGgg"
|
||
|
|
$out = @()
|
||
|
|
|
||
|
|
# 1. 新版 accessToken
|
||
|
|
$newTokResp = Invoke-RestMethod -Method Post -Uri "https://api.dingtalk.com/v1.0/oauth2/accessToken" -ContentType "application/json" -Body (@{appKey=$appKey;appSecret=$appSecret} | ConvertTo-Json)
|
||
|
|
$newToken = $newTokResp.accessToken
|
||
|
|
$out += "[1] new accessToken len=$($newToken.Length)"
|
||
|
|
|
||
|
|
# 2. 新版 token 调旧版 listbypage(复现应用内的失败)
|
||
|
|
$body = '{"department_id":1,"offset":0,"size":10}'
|
||
|
|
try {
|
||
|
|
$r2 = Invoke-RestMethod -Method Post -Uri "https://oapi.dingtalk.com/topapi/user/listbypage?access_token=$newToken" -ContentType "application/json" -Body $body
|
||
|
|
$out += "[2] listbypage(new tok): " + ($r2 | ConvertTo-Json -Depth 5 -Compress)
|
||
|
|
} catch { $out += "[2] listbypage(new tok) HTTP EX: " + $_.Exception.Message }
|
||
|
|
|
||
|
|
# 3. 新版 token 调 v2 listsub(部门接口对照)
|
||
|
|
try {
|
||
|
|
$r3 = Invoke-RestMethod -Method Post -Uri "https://oapi.dingtalk.com/topapi/v2/department/listsub?access_token=$newToken" -ContentType "application/json" -Body '{"dept_id":1}'
|
||
|
|
$out += "[3] v2 listsub(new tok): " + ($r3 | ConvertTo-Json -Depth 5 -Compress)
|
||
|
|
} catch { $out += "[3] v2 listsub(new tok) HTTP EX: " + $_.Exception.Message }
|
||
|
|
|
||
|
|
# 4. 旧版 gettoken
|
||
|
|
$oldTok = Invoke-RestMethod -Method Get -Uri "https://oapi.dingtalk.com/gettoken?appkey=$appKey&appsecret=$appSecret"
|
||
|
|
$oldToken = $oldTok.access_token
|
||
|
|
$out += "[4] gettoken errcode=$($oldTok.errcode) errmsg=$($oldTok.errmsg) oldToken len=$($oldToken.Length)"
|
||
|
|
|
||
|
|
# 5. 旧版 token 调 listbypage(对照:若成功则说明是新旧 token 兼容问题)
|
||
|
|
if ($oldToken) {
|
||
|
|
try {
|
||
|
|
$r5 = Invoke-RestMethod -Method Post -Uri "https://oapi.dingtalk.com/topapi/user/listbypage?access_token=$oldToken" -ContentType "application/json" -Body $body
|
||
|
|
$out += "[5] listbypage(old tok): " + ($r5 | ConvertTo-Json -Depth 5 -Compress)
|
||
|
|
} catch { $out += "[5] listbypage(old tok) HTTP EX: " + $_.Exception.Message }
|
||
|
|
|
||
|
|
# 6. 旧版 token 调 v2 版用户接口(另一种可选实现)
|
||
|
|
try {
|
||
|
|
$r6 = Invoke-RestMethod -Method Post -Uri "https://oapi.dingtalk.com/topapi/v2/user/list?access_token=$oldToken" -ContentType "application/json" -Body '{"dept_id":1,"cursor":0,"size":10}'
|
||
|
|
$out += "[6] v2 user/list(old tok): " + ($r6 | ConvertTo-Json -Depth 5 -Compress)
|
||
|
|
} catch { $out += "[6] v2 user/list(old tok) HTTP EX: " + $_.Exception.Message }
|
||
|
|
}
|
||
|
|
|
||
|
|
$out | Out-File -Encoding utf8 "d:\code\crm-backend-matt\tmp\dt-diag-out.txt"
|
||
|
|
$out | ForEach-Object { Write-Output $_ }
|