跳转到主要内容

根据unionid获取用户userid

接口调用说明

unionid是员工在当前开发者企业账号范围内的唯一标识,由系统生成:
  • 同一个企业员工,在不同的开发者企业账号下,unionid是不相同的。
  • 在同一个开发者企业账号下,unionid是唯一且不变的,例如同一个服务商开发的多个应用,或者是扫码登录等场景的多个App账号。

请求

基本信息
HTTP URLhttps://oapi.dingtalk.io/topapi/user/getbyunionid
HTTP MethodPOST
支持的应用类型appType-企业内部应用appType-第三方企业应用
权限要求permission-qyapi_get_member-成员信息读权限

查询参数

名称类型是否必填示例值描述
access_tokenStringbe3Fxxxx调用该接口的应用凭证。 说明 如果是通过免登方式获取的unionid,则不能使用免登获取的 token 调用该接口,需要使用下方的接口重新获取。 - 企业内部应用,通过获取企业内部应用的access_token接口获取。 - 第三方企业应用,通过获取第三方企业的access_token接口获取。

请求体

名称类型是否必填示例值描述
unionidStringz21HjQliSzpw0Yxxxx员工在当前开发者企业账号范围内的唯一标识,系统生成,不会改变。可通过调用通过免登码获取用户信息获取unionid。

请求示例

curl -X POST "https://oapi.dingtalk.io/topapi/user/getbyunionid" \
-H 'Content-Type:application/x-www-form-urlencoded;charset=utf-8' \
-d 'access_token=6348d21e-fb41-4745-a214-95bcf8c118f0' \
-d 'unionid=z21HjQliSzpw0YWCNxmii6u2Os62cZ62iSZ'
Java
DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.io/topapi/user/getbyunionid");
OapiUserGetbyunionidRequest req = new OapiUserGetbyunionidRequest();
req.setUnionid("z21HjQliSzpw0Yxxxxxx");
OapiUserGetbyunionidResponse rsp = client.execute(req, access_token);
System.out.println(rsp.getBody());
Python
import dingtalk.api

req=dingtalk.api.OapiUserGetbyunionidRequest("https://oapi.dingtalk.io/topapi/user/getbyunionid")
req.unionid="z21HjQliSzpw0YWCNxmii6u2Os62cZ62iSZ"
try:
  resp= req.getResponse(access_token)
  print(resp)
except Exception,e:
  print(e)
PHP
include "TopSdk.php";
date_default_timezone_set('Asia/Shanghai');

$c = new DingTalkClient(DingTalkConstant::$CALL_TYPE_OAPI, DingTalkConstant::$METHOD_POST , DingTalkConstant::$FORMAT_JSON);
$req = new OapiUserGetbyunionidRequest;
$req->setUnionid("z21HjQliSzpw0YWCNxmii6u2Os62cZ62iSZ");
$resp = $c->execute($req, $access_token, "https://oapi.dingtalk.io/topapi/user/getbyunionid");
C#
IDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.io/topapi/user/getbyunionid");
OapiUserGetbyunionidRequest req = new OapiUserGetbyunionidRequest();
req.Unionid = "z21HjQliSzpw0YWCNxmii6u2Os62cZ62iSZ";
OapiUserGetbyunionidResponse rsp = client.Execute(req, access_token);
Console.WriteLine(rsp.Body);

响应

响应体

名称类型示例值描述
request_idStringzcqi5450rpit请求ID。
errcodeNumber0返回码。
errmsgStringok返回码描述。
resultUserGetByUnionIdResponse返回结果。
contact_typeNumber0联系类型: - 0:企业内部员工 - 1:企业外部联系人
useridStringzhangsan用户的userid。

响应体示例

{
  "errcode":"0",
  "errmsg":"ok",
  "result":{
   "contact_type":"0",
   "userid":"zhangsan"
  },
  "request_id": "zcqi5450rpit"
}

错误码

若调用该接口报错,可根据错误信息在全局错误码文档中查找解决方案。
错误码(errcode)错误码描述(errmsg)解决方案
60121未找到对应员工请检查unionId是否正确
400002无效的参数请检查unionId是否正确
-1系统繁忙请稍后再试