«

钉钉API接口-用PHP+Curl实现获取用户信息

时间:2024-3-3 10:51     作者:韩俊     分类: PHP


钉钉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 php教程

热门推荐