钉钉API接口-用PHP+Curl实现获取用户信息
更新:2023-11-14 10:32:40
人气:726
来源:本站原创
A+
钉钉API接口获取用户的user_ID、unionid、手机号、姓名、头像图片地址等信息。
首先说明,access_token的获取请参考李雷博客中之前分享的博文有示例代码,而其中的user_ID是在钉钉的OA后台-通讯录-用户管理中直接查看到的,不用单独接口获取。(UserID唯一)
接下来往下看,钉钉API获取数据,我用PHP的方法实现,就是采用Curl+POST或GET方式传递数据再接收返回的JSON数据做解析,钉钉API的其他功能也可用如下代码,改一下地址和参数即可。
核心PHP代码函数:
//接口函数-Curl-POST-GET请求方式
function HttpPost($url,$postget,$data,$header,$access_token){
$curl = curl_init(); // 启动一个CURL会话
$data=json_encode($data);
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0");
curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // 对认证证书来源的检查
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); // 从证书中检查SSL加密算法是否存在
if ($postget=='post'){
curl_setopt($curl, CURLOPT_POST, true); // 发送一个常规的Post请求
curl_setopt($curl, CURLOPT_POSTFIELDS, $data ); // Post提交的数据包 http_build_query($data)
}else{
curl_setopt($curl, CURLOPT_POST, false); // 发送一个常规的Post请求
}
curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环
curl_setopt($curl, CURLOPT_HEADER, false); // 显示返回的Header区域内容
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); // 获取的信息以文件流的形式返回
$result = curl_exec($curl); // 执行操作
if (curl_errno($curl)) {
return 'Error POST'.curl_error($curl);
}
curl_close($curl); // 关键CURL会话
return $result; // 返回数据
}
//接口函数-获取用户信息
function get_user_info($userid,$access_token){
$post_url="https://oapi.dingtalk.com/topapi/v2/user/get?access_token=".$access_token;
$post_data = array(
"userid" => $userid,
"language" => "zh_CN"
);
$header=array('Content-Type:application/json');//header头信息
$response=HttpPost($post_url,'post',$post_data,$header,$access_token);
$date_response = json_decode($response,true);//钉钉返回的结果,true数组形式
return $date_response;
}
钉钉接口用PHP调用输出用户信息:
$userid='xxxxxxxx';//用户的user_ID,这个是通过钉钉OA后台查询的
$user_info_all=get_user_info($userid,$access_token);
$dingding_name=iconv('utf-8','gbk',$user_info_all["result"]["name"]);//钉钉的姓名(中文转码)
$dingding_mobile=$user_info_all["result"]["mobile"];//钉钉的手机号
$dingding_img=$user_info_all["result"]["avatar"];//钉钉的头像
$dingding_unionid=$user_info_all["result"]["unionid"];//钉钉的unionid 员工在当前开发者企业账号范围内的唯一标识
echo "姓名:".$dingding_name."<br />";
echo "手机:".$dingding_mobile."<br />";
echo "unionid:".$dingding_unionid."<br />";
echo "头像:".$dingding_img."<br />";
网上的代码都很片面不完整,今天整理了一套,对curl使用不熟、对钉钉API接口无从下手的兄弟么可以参考一下,以上的代码可以复用,参考这个就可以实现其他的钉钉API接口来获取数据了。
推荐的文章
随手记
PHP经验分享
- ● Pluginmysql_native_passwordreported:''mysql_native_password'isdeprecate问题
- ● PHP实现计算CRC-16/MODBUS校验位
- ● MySQLSUM在没有符合查询条件时返回结果为空的处理办法
- ● 如何开启PHP8的JIT提升运行速度
- ● 钉钉API接口-用PHP+Curl实现获取应用Access_Token
- ● 在PHP中使用CURL,“撩”服务器只需几行——phpcurl详细解析和常见大坑
- ● MySQLInnodb并发涉及参数说明
- ● mysql参数调优之innodb_thread_concurrency、innodb_concurrency_tickets合理的使用cpu性能
- ● PHP用fsockopen检测指定IP端口是否开启可用
- ● PHP用socket检测服务器IP端口是否开放?代码示例