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.
 
 
 
 
 

44 lines
2.6 KiB

# 钉钉同步失败诊断:对比新旧 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 $_ }