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,可改为2if (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;}

环信IM 集成服务器端(php相关推荐

  1. 【环信IM集成指南】iOS端常见问题整理(2)

    [环信IM集成指南]iOS端常见问题整理(1-15) 16.后端该如何操作用户上麦 后端无法直接控制让谁上麦,所以只能通过发送CMD消息的方式来和移动端进行交互,移动端根据逻辑指令去操作 17.使用[ ...

  2. php 环信easyui_环信easeui集成:坑总结2018

    环信EaseUI 集成,集成不做描述,看文档即可,下面主要谈一些对easeui的个性化需求修改. 该篇文章将解决的问题: 1.如何将App用户体系的用户名和用户头像 显示于环信的easeui 2.如何 ...

  3. 【环信IM集成指南】iOS端常见问题整理(1)

    1.集成IM如何自定义添加表情组 集成环信IM自定义添加表情组 - IM Geek开发者社区-移动开发者社区-开源社区-IM Geek官网 2.旧版音视频与EaseCallKit兼容升级方案 旧版音视 ...

  4. 【环信IM集成指南】Web端常见问题整理

    1. 掉线之后,会有回调或通知吗? sdk有提供连接状态的回调监听 初始化 [IM开发文档] 2. 怎么转发多条聊天记录? 挑选你要转发的消息内容然后以自定义消息 或者ext扩展字段携带过去实现 3. ...

  5. 【环信IM集成指南】Android 端常见问题整理

    1.如何修改系统通知中的头像和用户名 系统通知是在主module中自己写的,demo中是AgreeMsgDelegate,InviteMsgDelegate,OtherMsgDelegate中去修改头 ...

  6. Android 集成环信后 无法启动,关于androidx升级后环信sdk集成遇到的问题

    18年谷歌对support包等依赖混乱的问题进行了决策并推出androidx,可以有效的解决support包的问题,但版本迁移带给我们程序员很多麻烦的问题,就是之前的sdk很多都会报错,这里用环信的s ...

  7. 环信快速集成,以及实际集成中遇到的坑

    一.pod集成遇到的问题 1.直接pod 安装 pod 'EaseUI', :git => 'https://github.com/easemob/easeui-ios-hyphenate-co ...

  8. 【环信IM集成教程】iOS端收到离线消息显示设置

    [集成教程]iOS端收到离线消息显示设置 查看更多官方集成教程:https://www.imgeek.org/video/https://www.imgeek.org/video/

  9. 环信IM集成问题整理——常见集成问题

    EaseIMKit如何设置昵称.头像 https://imgeek.org/article/825354241 iOS没有通知栏提示? 通知栏分本地通知和apns推送通知 **情况1:**App进入后 ...

最新文章

  1. python制作图形化界面_python图形化界面设计(wxpython)一布局管理
  2. ubuntu16.04系统下创建python隔离环境
  3. HDOJ/HDU 2565 放大的X(分段思考~)
  4. Java中Set巧用,去掉重复数据
  5. 利用?和 ??简化界面的默认配置/自定义配置
  6. access如何查询两张表的内容_为什么可以的话,不要使用星号 *,而是相应的字段名来进行查询 MySQL内连接如何选择驱动表
  7. solidworks重建模型好慢_兄弟只能帮你到这了,SOLIDWORKS卡顿或许秘密就在这些选项里...
  8. 【初赛】概率与期望学习笔记
  9. ssl提高组周六备考赛【2018.10.20】
  10. 2021开发者最想学的编程语言,Go荣登榜首!
  11. 2019-07-22
  12. cmd 批处理文件(.bat)文件的编写
  13. Cloudera Manager 安装
  14. 2048php,Phaser实现2048
  15. asp.net 下载文件几种方式
  16. python原始数据是什么_荐Python种MNE库模拟原始脑电数据
  17. 兆骑科创高层次人才引进双创平台,双创服务,赛事路演
  18. JavaScript的json和Array及Array数组的使用方法
  19. 国产操作系统逐步强大,Linux操作系统成为主流
  20. 全球及中国数字每周可编程时间开关行业研究及十四五规划分析报告

热门文章

  1. 金蝶 技术支持 笔试_2020年金蝶教育论坛在三亚成功举办 - 网络 - IT商业网
  2. 08 数据采集 - 如何自动化采集数据
  3. 面试官:你谈一谈什么是接口测试?怎样做接口测试?这样回答让他竖起大拇指!
  4. 台式主机改装家用服务器记录
  5. Android——Framework目录分析及系统启动过程以及目录简介
  6. Python 字符串大小写转换、全部转换成大写或小写等
  7. alpha matting
  8. Kafka系列之:详细介绍部署Kafka Connect分布式集群
  9. 怎么备份服务器里面的文件夹,如何备份文件?怎样备份文件夹?文件备份方法介绍...
  10. PPT | 《云原生和微服务架构》