|
@@ -130,13 +130,13 @@ class DrbService extends Service
|
|
|
if (! $success) return [false, $tokenData]; // tokenData 是错误信息
|
|
|
$accessToken = $tokenData['access_token'];
|
|
|
|
|
|
- // 2. 用 code 换取 userid
|
|
|
- $url = "https://api.dingtalk.com/v1.0/user/getuserinfo";
|
|
|
+ // 2. 用 code 换取用户信息(v2 接口)
|
|
|
+ $url = "https://oapi.dingtalk.com/topapi/v2/user/getuserinfo?access_token={$accessToken}";
|
|
|
+
|
|
|
$resp = $this->curlOpen1($url, [
|
|
|
'request' => 'post',
|
|
|
'header' => [
|
|
|
"Content-Type: application/json",
|
|
|
- "x-acs-dingtalk-access-token: {$accessToken}"
|
|
|
],
|
|
|
'json' => [
|
|
|
"code" => $code
|
|
@@ -144,33 +144,22 @@ class DrbService extends Service
|
|
|
]);
|
|
|
|
|
|
$res = json_decode($resp, true);
|
|
|
- $userid = $res['result']['userid'] ?? null;
|
|
|
+
|
|
|
+ if (!isset($res['errcode'])) {
|
|
|
+ return [false, '接口返回异常: ' . $resp];
|
|
|
+ }
|
|
|
+
|
|
|
+ if ($res['errcode'] !== 0) {
|
|
|
+ return [false, '获取用户信息失败: ' . $res['errmsg']];
|
|
|
+ }
|
|
|
+
|
|
|
+ // v2 接口返回的是 result.user_id
|
|
|
+ $userid = $res['result']['user_id'] ?? null;
|
|
|
if (!$userid) {
|
|
|
- return [false, '获取userid失败:' . $res['errmsg']];
|
|
|
+ return [false, '获取userid失败'];
|
|
|
}
|
|
|
|
|
|
return [true, $res];
|
|
|
-
|
|
|
-// // 3. 根据 userid 获取用户详情
|
|
|
-// $urlDetail = "https://api.dingtalk.com/v1.0/user/get";
|
|
|
-// $respDetail = $this->curlOpen1($urlDetail, [
|
|
|
-// 'request' => 'post',
|
|
|
-// 'header' => [
|
|
|
-// "Content-Type: application/json",
|
|
|
-// "x-acs-dingtalk-access-token: {$accessToken}"
|
|
|
-// ],
|
|
|
-// 'json' => [
|
|
|
-// "userid" => $userid
|
|
|
-// ]
|
|
|
-// ]);
|
|
|
-//
|
|
|
-// $detail = json_decode($respDetail, true);
|
|
|
-// if (empty($detail['result'])) {
|
|
|
-// return [false, '获取用户详情失败:' . ($detail['msg'] ?? json_encode($detail))];
|
|
|
-// }
|
|
|
-
|
|
|
- // 返回用户信息
|
|
|
-// return [true, $detail['result']];
|
|
|
}
|
|
|
|
|
|
|