环信IM 集成服务器端(php
TP
在 项目/Lib/Action/ 下写类文件
<?php /*$options = array( "client_id" => "xxx", //你的信息 "client_secret" => "xxx",//你的信息 "org_name" => "123" ,//你的信息 "app_name" => "123" ,//你的信息 ); $e = new ApiEasemobAction($options); $groupInfo = array( "groupname" => "leeef", "desc" => "leeff", // "owner" => "sy1" ); //$result = $e->getUserGroups("80983543"); //$result = $e->getGroupList(); //$result = $e->getGroupDetial("1423734662380237"); echo "<pre>"; //print_r($result); print_r($e->getToken());*/ /* * --------------强调说明------------- * 参数 数字int 最好填 String 如groupId 1423734662380237 ,传参时传getGroupDetial("1423734662380237"); */ /** * 环信-服务器端REST API * @author limx <limx@xiaoneimimi.com> */ class ApiEasemobAction { /** *获取app管理员token POST /{dihon}/{loveofgod}/token */ public function getToken() { $url="https://a1.easemob.com/dihon/loveofgod/token"; $body=array( "grant_type"=>"client_credentials", "client_id"=>"xxx", "client_secret"=>"xxx" ); $patoken=json_encode($body); $res = $this->postCurl($url,$patoken); $tokenResult = array(); $tokenResult = json_decode($res, true); //var_dump($tokenResult); return "Authorization:Bearer ". $tokenResult["access_token"]; } /** *获取app管理员token POST /{dihon}/{loveofgod}/token */ public function getTokenForJs() { $url="https://a1.easemob.com/dihon/loveofgod/token"; $body=array( "grant_type"=>"password", "username"=>"fengpei", "password"=>"123456" ); $patoken=json_encode($body); $res = postCurl($url,$patoken); $tokenResult = array(); $tokenResult = json_decode($res, true); //var_dump($tokenResult); return "Authorization: Bearer ". $tokenResult["access_token"]; } /** * 授权注册模式 POST /{dihon}/{loveofgod}/users */ public function accreditRegister($nikename,$pwd) { $url="https://a1.easemob.com/dihon/loveofgod/users"; $body=array( "username"=>$nikename, "password"=>$pwd, ); $patoken=json_encode($body); $header = array(getToken()); //$res = postCurl($url,$patoken,$header); //开发者后台改成授权注册时,不带header不能注册成功,也就是可以无token注册 $res = postCurl($url,$patoken,$header); $arrayResult = json_decode($res, true); return $arrayResult ; } /** *重置用户密码 PUT /{dihon}/{loveofgod}/users/{username}/password */ public function editPassword($nikename,$newpwd) { $url="https://a1.easemob.com/dihon/loveofgod/users/".$nikename."/password"; $body=array( "newpassword"=>$newpwd, ); $patoken=json_encode($body); $header = array(getToken()); $method = "PUT"; $res = postCurl($url,$patoken,$header,$method); $arrayResult = json_decode($res, true); return $arrayResult ; } /** *修改用户昵称 PUT /{dihon}/{loveofgod}/users/{username} */ public function editNickName($username,$nickname) { $url="https://a1.easemob.com/dihon/loveofgod/users/".$username; $body=array( "nickname"=>$nickname, ); $patoken=json_encode($body); $header = array(getToken()); $method = "PUT"; $res = postCurl($url,$patoken,$header,$method); $arrayResult = json_decode($res, true); return $arrayResult ; } //注册用户 public function addUser($username,$password,$nickname){ $url="https://a1.easemob.com/dihon/loveofgod/users/"; $body=array( "username"=>$username, "password"=>$password, "nickname"=>$nickname, ); $patoken=json_encode($body); $header = array($this->getToken()); $method = "POST"; //$result = $this->request("daikequan"."/app"."/".$user,"PUST"); $res = $this->postCurl($url,$patoken,$header,$method,CURLINFO_HTTP_CODE); $arrayResult = json_decode($res, true); return $arrayResult; } /* *删除用户 DELETE /{dihon}/{loveofgod}/users/{username} */ public function deleteUser($username) { $url="https://a1.easemob.com/dihon/loveofgod/users/".$username; $body=array(); $patoken=json_encode($body); $header = array($this->getToken()); $method = "DELETE"; $res = $this->postCurl($url,$patoken,$header,$method); $arrayResult = json_decode($res, true); return $arrayResult ; } /** * 获取指定用户的详情 * * @param $username 用户名 */ public function userDetails($username) { $url="https://a1.easemob.com/dihon/loveofgod/users/".$username; $access_token=getToken(); //var_dump($access_token); //$header[]="Authorization: Bearer " . $access_token; //注意:获取到的值中本来就有Authorization前缀了。 $header[]=$access_token; $result=postCurl($url,"",$header,$type="GET"); return $result; /* $url = $this->url . "users/" . $username; $access_token = $this->getToken (); $header [] = "Authorization: Bearer " . $access_token; $result = $this->postCurl ( $url, "", $header, $type = "GET" ); return $result; */ } /** *给用户添加一个好友 */ public function addFriend($owner_username,$friend_username){ $url="https://a1.easemob.com/dihon/loveofgod/users/".$owner_username."/contacts/users/".$friend_username; $access_token = getToken(); $header[]=$access_token; $result=postCurl($url,"",$header); return $result; } /** * 查看用户的好友 * * @param * $owner_username */ public function showFriend($owner_username) { $url="https://a1.easemob.com/dihon/loveofgod/users/" . $owner_username . "/contacts/users/"; $access_token = getToken(); $header[] = $access_token; $result = postCurl ( $url, "", $header, $type = "GET" ); return $result; } /** * 删除好友 * * @param * $owner_username * @param * $friend_username */ public function deleteFriend($owner_username, $friend_username) { $url="https://a1.easemob.com/dihon/loveofgod/users/" . $owner_username . "/contacts/users/" . $friend_username; $access_token = getToken (); $header [] = $access_token; $result = postCurl ( $url, "", $header, $type = "DELETE" ); return $result; } /** * 查看用户是否在线 * * @param * $username */ public function isOnline($username) { $url="https://a1.easemob.com/dihon/loveofgod/users/" . $username . "/status"; $access_token =getToken (); $header [] = $access_token; $result = postCurl ( $url, "", $header, $type = "GET" ); return $result; } /** * 查看离线消息数 * * @param * $username */ public function getOfflineMessages($username) { $url="https://a1.easemob.com/dihon/loveofgod/users/" . $username . "/offline_msg_count"; $access_token =getToken (); $header [] = $access_token; $result = postCurl ( $url, "", $header, $type = "GET" ); return $result; } //------------------聊天相关的方法 /** * 发送消息 * * @param string $from_user * 发送方用户名 * @param array $username * array("1","2") * @param string $target_type * 默认为:users 描述:给一个或者多个用户(users)或者群组发送消息(chatgroups) * @param string $content * @param array $ext * 自定义参数 */ public function yy_hxSend($from_user = "admin", $username, $content, $target_type = "users", $ext) { $option ["target_type"] = $target_type; $option ["target"] = $username; $params ["type"] = "txt"; $params ["msg"] = $content; $option ["msg"] = $params; $option ["from"] = $from_user; $option ["ext"] = $ext; $url="https://a1.easemob.com/dihon/loveofgod/messages"; $access_token = getToken(); $access_token="Authorization:Bearer YWMtR5C9ugKUEeWF-3GovA5z7wAAAU6-Q0xnJgBx_km5NlCs-9lkSsLiNd5ttTM"; $header [] = $access_token; $result = postCurl ( $url, $option, $header ); return $result; } /** * 获取app中所有的群组 */ public function chatGroups() { $url="https://a1.easemob.com/dihon/loveofgod/chatgroups"; $access_token = getToken(); $header [] = $access_token; $result = postCurl ( $url, "", $header, $type = "GET" ); return $result; } /** * 创建群组 * * @param $option["groupname"] //群组名称, * 此属性为必须的 * @param $option["desc"] //群组描述, * 此属性为必须的 * @param $option["public"] //是否是公开群, * 此属性为必须的 true or false * @param $option["approval"] //加入公开群是否需要批准, * 没有这个属性的话默认是true, 此属性为可选的 * @param $option["owner"] //群组的管理员, * 此属性为必须的 * @param $option["members"] //群组成员,此属性为可选的 */ public function createGroups($option) { $url="https://a1.easemob.com/dihon/loveofgod/chatgroups"; $access_token = getToken(); $header [] = $access_token; $result = postCurl ( $url, $option, $header ); return $result; } /** * 获取群组详情 * * @param * $group_id */ public function chatGroupsDetails($group_id) { $url="https://a1.easemob.com/dihon/loveofgod/chatgroups" . $group_id; $access_token = getToken (); $header [] = $access_token; $result = postCurl ( $url, "", $header, $type = "GET" ); return $result; } /** * 删除群组 * * @param * $group_id */ public function deleteGroups($group_id) { $url="https://a1.easemob.com/dihon/loveofgod/chatgroups/" . $group_id; $access_token = getToken (); $header [] = $access_token; $result = postCurl ( $url, "", $header, $type = "DELETE" ); return $result; } /** * 获取群组成员 * * @param * $group_id */ public function groupsUser($group_id) { $url="https://a1.easemob.com/dihon/loveofgod/chatgroups/" . $group_id . "/users"; $access_token = getToken (); $header [] = $access_token; $result = postCurl ( $url, "", $header, $type = "GET" ); return $result; } /** * 群组添加成员 * * @param * $group_id * @param * $username */ public function addGroupsUser($group_id, $username) { $url="https://a1.easemob.com/dihon/loveofgod/chatgroups/" . $group_id . "/users/" . $username; $access_token = getToken (); $header [] = $access_token; $result = postCurl ( $url, "", $header, $type = "POST" ); return $result; } /** * 群组删除成员 * * @param * $group_id * @param * $username */ public function delGroupsUser($group_id, $username) { $url="https://a1.easemob.com/dihon/loveofgod/chatgroups/" . $group_id . "/users/" . $username; $access_token = getToken (); $header [] = $access_token; $result = postCurl ( $url, "", $header, $type = "DELETE" ); return $result; } /** * 聊天消息记录 * * @param $ql 查询条件如:$ql * = "select+*+where+from="" . $uid . ""+or+to="". $uid .""+order+by+timestamp+desc&limit=" . $limit . $cursor; * 默认为order by timestamp desc * @param $cursor 分页参数 * 默认为空 * @param $limit 条数 * 默认20 */ public function chatRecord($ql = "", $cursor = "", $limit = 20) { $ql = ! empty ( $ql ) ? "ql=" . $ql : "order+by+timestamp+desc"; $cursor = ! empty ( $cursor ) ? "&cursor=" . $cursor : ""; $url="https://a1.easemob.com/dihon/loveofgod/chatmessages?" . $ql . "&limit=" . $limit . $cursor; $access_token = getToken (); $header [] = $access_token; $result = postCurl ( $url, "", $header, $type = "GET " ); return $result; } /* 上传文件: */ public function uploadFile(){ $body["file"]="/images/girl.jpg"; //$option["file"]="/Uploads/Lawyer/1-13040G6445U29.jpg"; $url="http://a1.easemob.com/dihon/loveofgod/chatfiles"; $access_token=getToken(); //$access_token="YWMttf6etvPpEeSsLisKR1j8fwAAAU5eJVuAGnvSn9EUMb1kdE8B9sTUNxjqXvA"; //$header[]="enctype:multipart/form-data"; //$header[]=$access_token; //$header[]="restrict-access:true"; $header=array("enctype:multipart/form-data",$access_token,"restrict-access:true"); $option=json_encode($body); $result=postCurl($url,$option,$header); //$data=json_decode($result,true); print_r($result); //$uuid=$data["entities"][0]["uuid"]; //return $uuid; return $result; } //postCurl方法 public function postCurl($url, $body, $header = array(), $method = "POST") { array_push($header, "Accept:application/json"); array_push($header, "Content-Type:application/json"); //array_push($header, "http:multipart/form-data"); $ch = curl_init();//启动一个curl会话 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //curl_setopt($ch, $method, 1); switch ($method){ case "GET" : curl_setopt($ch, CURLOPT_HTTPGET, true); break; case "POST": curl_setopt($ch, CURLOPT_POST,true); break; case "PUT" : curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT"); break; case "DELETE": curl_setopt ($ch, CURLOPT_CUSTOMREQUEST, "DELETE"); break; } curl_setopt($ch, CURLOPT_USERAGENT, "SSTS Browser/1.0"); curl_setopt($ch, CURLOPT_ENCODING, "gzip"); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); //原先是FALSE,可改为2 if (isset($body{3}) > 0) { curl_setopt($ch, CURLOPT_POSTFIELDS, $body); } if (count($header) > 0) { curl_setopt($ch, CURLOPT_HTTPHEADER, $header); } $ret = curl_exec($ch); $err = curl_error($ch); curl_close($ch); //clear_object($ch); //clear_object($body); //clear_object($header); if ($err) { return $err; } return $ret; } } ?>
调用:
$e = new ApiEasemobAction(); //var_dump($e->getToken()); $arrResult = $e->addUser("dashan77",md5("987654321"),"gongzhu"); //$arrResult = $e->deleteUser("153b38374b0e0d5446706054a0204fa6"); var_dump($arrResult); //注册或删除失败时,uuid为空。根据uuid是否有值 判断操作是否成功 $result = $arrResult["entities"][0]["uuid"]?$arrResult["entities"][0]["uuid"]:""; if(empty($result)){ $result=array("err_no" =>0,"err_msg"=>"failed"); //注册环信im失败 echo json_encode($result); exit; }
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。