unionId からユーザー ID を取得する
API 呼び出し説明
unionId は、現在の開発者の企業アカウント範囲内における社員の一意の識別子で、システムにより生成されます。- 同一の企業社員であっても、異なる開発者の企業アカウント下では unionId は異なります。
- 同一の開発者の企業アカウント下では、unionId は一意かつ不変です。例えば、同一のサービスプロバイダーが開発した複数のアプリや、QRコードでログインなどのシナリオにおける複数の App アカウントの場合などです。
リクエスト
| 基本情報 | |
|---|---|
| HTTP URL | https://api.dingtalk.io/topapi/user/getbyunionid |
| HTTP Method | POST |
| サポートされるアプリタイプ | appType-社内アプリ appType-サードパーティ社内アプリ |
| 権限要件 | permission-qyapi_get_member-ユーザー情報の読み取り権限 |
クエリパラメータ
| 名前 | タイプ | 必須 | 例 | 説明 |
|---|---|---|---|---|
| access_token | String | はい | be3Fxxxx | 本 API を呼び出すアプリ認証情報。 説明 サイレントログイン方式で取得した unionId の場合、サイレントログインで取得した token を使用して本 API を呼び出すことはできません。下記の API を使用して再取得する必要があります。 - 社内アプリの場合、社内アプリの access_token を取得する API で取得します。 - サードパーティ社内アプリの場合、サードパーティ企業の access_token を取得する API で取得します。 |
リクエストボディ
| 名前 | タイプ | 必須 | 例 | 説明 |
|---|---|---|---|---|
| unionid | String | はい | z21HjQliSzpw0Yxxxx | 現在の開発者の企業アカウント範囲内における社員の一意の識別子で、システムにより生成され、変更されることはありません。サイレントログインコードを使用してユーザー情報を取得する API を呼び出すことで unionId を取得できます。 |
リクエスト例
curl -X POST "https://api.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'
DingTalkClient client = new DefaultDingTalkClient("https://api.dingtalk.io/topapi/user/getbyunionid");
OapiUserGetbyunionidRequest req = new OapiUserGetbyunionidRequest();
req.setUnionid("z21HjQliSzpw0Yxxxxxx");
OapiUserGetbyunionidResponse rsp = client.execute(req, access_token);
System.out.println(rsp.getBody());
import dingtalk.api
req=dingtalk.api.OapiUserGetbyunionidRequest("https://api.dingtalk.io/topapi/user/getbyunionid")
req.unionid="z21HjQliSzpw0YWCNxmii6u2Os62cZ62iSZ"
try:
resp= req.getResponse(access_token)
print(resp)
except Exception,e:
print(e)
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://api.dingtalk.io/topapi/user/getbyunionid");
IDingTalkClient client = new DefaultDingTalkClient("https://api.dingtalk.io/topapi/user/getbyunionid");
OapiUserGetbyunionidRequest req = new OapiUserGetbyunionidRequest();
req.Unionid = "z21HjQliSzpw0YWCNxmii6u2Os62cZ62iSZ";
OapiUserGetbyunionidResponse rsp = client.Execute(req, access_token);
Console.WriteLine(rsp.Body);
レスポンス
レスポンスボディ
| 名前 | タイプ | 例 | 説明 |
|---|---|---|---|
| request_id | String | zcqi5450rpit | リクエスト ID。 |
| errcode | Number | 0 | リターンコード。 |
| errmsg | String | ok | リターンコードの説明。 |
| result | UserGetByUnionIdResponse | 返却結果。 | |
| contact_type | Number | 0 | 連絡先タイプ: - 0: 社内社員 - 1: 企業の外部連絡先 |
| userid | String | zhangsan | ユーザーの ユーザー ID。 |
レスポンスボディ例
{
"errcode":"0",
"errmsg":"ok",
"result":{
"contact_type":"0",
"userid":"zhangsan"
},
"request_id": "zcqi5450rpit"
}
エラーコード
本 API の呼び出し時にエラーが発生した場合は、エラーメッセージをもとにグローバルエラーコードドキュメントから解決方法を確認してください。| エラーコード(errcode) | エラーコードの説明(errmsg) | 解決方法 |
|---|---|---|
| 60121 | 該当する社員が見つかりません | unionId が正しいか確認してください |
| 400002 | 無効なパラメータ | unionId が正しいか確認してください |
| -1 | システムビジー | 後で再度お試しください |