<?php
namespace Home\Controller;
use Think\Controller;/*** 环信-服务器端REST API* @author    limx <limx@xiaoneimimi.com>*/
class HXController extends Controller {private $client_id='YXA6ef0hcJSyEeWlQg0wFqthDQ';private $client_secret='YXA6dd1GuLATzkHcqqTI3OIgLExnOiI';private $org_name='ipa361';private $app_name='cg';private $url = 'https://a1.easemob.com/ipa361/cg/';/*** 初始化参数** @param array $options   * @param $options['client_id']        * @param $options['client_secret'] * @param $options['org_name']     * @param $options['app_name']         *//* public function __construct($options) {$this->client_id = isset ( $options ['client_id'] ) ? $options ['client_id'] : '';$this->client_secret = isset ( $options ['client_secret'] ) ? $options ['client_secret'] : '';$this->org_name = isset ( $options ['org_name'] ) ? $options ['org_name'] : '';$this->app_name = isset ( $options ['app_name'] ) ? $options ['app_name'] : '';if (! empty ( $this->org_name ) && ! empty ( $this->app_name )) {$this->url = 'https://a1.easemob.com/' . $this->org_name . '/' . $this->app_name . '/';}} *//*** 开放注册模式** @param $options['username'] 用户名         * @param $options['password'] 密码* 设置密码为账号+_ipa做加密运算*/public function openRegister($username) {$options['username']=$username;//$tripldes =new TripledesModel();$tripldes =D("Tripledes");$pass= $tripldes->encrypt($username.'_ipa');$options['password']=$pass;//$options['password']=123456;$url = $this->url . "users";$result = $this->postCurl ( $url, $options, $head = 0 );//echo $result ;exit;$info = json_decode($result,true);//dump($info);//echo $info ;exit;if(isset($info['entities'])){return '1';}else{return '0';}}public function test(){$des =D("Tripledes");echo $ret = $des->encrypt("123") . "\n";echo $des->decrypt($ret) . "\n";$info = array('msg'=>'成功','code'=>200,'ret'=>$ret,'des'=>$des);echo json_encode($info);}/*** 授权注册模式 || 批量注册** @param $options['username'] 用户名         * @param $options['password'] 密码*          批量注册传二维数组*/public function accreditRegister($options) {$url = $this->url . "users";$access_token = $this->getToken ();$header [] = 'Authorization: Bearer ' . $access_token;$result = $this->postCurl ( $url, $options, $header );//return $result;echo $result;}/*** 获取指定用户详情** @param $username 用户名            */public function userDetails($username) {$url = $this->url . "users/" . $username;$access_token = $this->getToken ();//print_r($access_token);exit;$header [] = 'Authorization: Bearer ' . $access_token;$result = $this->postCurl ( $url, '', $header, $type = 'GET' );$info = json_decode($result,true);//print_r($info);if(isset($info['entities'])){return '1';}else{return '0';}}/*** 重置用户密码** @param $options['username'] 用户名         * @param $options['password'] 密码          * @param $options['newpassword'] 新密码          */public function editPassword($options) {$url = $this->url . "users/" . $options ['username'] . "/password";$access_token = $this->getToken ();$header [] = 'Authorization: Bearer ' . $access_token;$result = $this->postCurl ( $url, $options, $header, $type = 'PUT');return $result;}/*** 删除用户** @param $username 用户名            */public function deleteUser($username) {$url = $this->url . "users/" . $username;$access_token = $this->getToken ();$header [] = 'Authorization: Bearer ' . $access_token;$result = $this->postCurl ( $url, '', $header, $type = 'DELETE' );}/*** 批量删除用户* 描述:删除某个app下指定数量的环信账号。上述url可一次删除300个用户,数值可以修改 建议这个数值在100-500之间,不要过大** @param $limit="300" 默认为300条         * @param $ql 删除条件*          如ql=order+by+created+desc 按照创建时间来排序(降序)*/public function batchDeleteUser($limit = "300", $ql = '') {$url = $this->url . "users?limit=" . $limit;if (! empty ( $ql )) {$url = $this->url . "users?ql=" . $ql . "&limit=" . $limit;}$access_token = $this->getToken ();$header [] = 'Authorization: Bearer ' . $access_token;$result = $this->postCurl ( $url, '', $header, $type = 'DELETE' );}/*** 给一个用户添加一个好友** @param*          $owner_username* @param*          $friend_username*/public function addFriend($owner_username, $friend_username) {$url = $this->url . "users/" . $owner_username . "/contacts/users/" . $friend_username;$access_token = $this->getToken ();$header [] = 'Authorization: Bearer ' . $access_token;$result = $this->postCurl ( $url, '', $header );}/*** 删除好友** @param*          $owner_username* @param*          $friend_username*/public function deleteFriend($owner_username, $friend_username) {$url = $this->url . "users/" . $owner_username . "/contacts/users/" . $friend_username;$access_token = $this->getToken ();$header [] = 'Authorization: Bearer ' . $access_token;$result = $this->postCurl ( $url, '', $header, $type = "DELETE" );}/*** 查看用户的好友** @param*          $owner_username*/public function showFriend($owner_username) {$url = $this->url . "users/" . $owner_username . "/contacts/users/";$access_token = $this->getToken ();$header [] = 'Authorization: Bearer ' . $access_token;$result = $this->postCurl ( $url, '', $header, $type = "GET" );}// +----------------------------------------------------------------------// | 聊天相关的方法// +----------------------------------------------------------------------/*** 查看用户是否在线** @param*          $username*/public function isOnline($username) {$url = $this->url . "users/" . $username . "/status";$access_token = $this->getToken ();$header [] = 'Authorization: Bearer ' . $access_token;$result = $this->postCurl ( $url, '', $header, $type = "GET" );//return $result;echo $result;}/*** 发送消息** @param string $from_user*          发送方用户名* @param array $username*          array('1','2')* @param string $target_type*          默认为:users 描述:给一个或者多个用户(users)或者群组发送消息(chatgroups)* @param string $content          * @param array $ext*          自定义参数*/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 = $this->url . "messages";$access_token = $this->getToken ();$header [] = 'Authorization: Bearer ' . $access_token;$result = $this->postCurl ( $url, $option, $header );return $result;}/*** 获取app中所有的群组*/public function chatGroups() {$url = $this->url . "chatgroups";$access_token = $this->getToken ();$header [] = 'Authorization: Bearer ' . $access_token;$result = $this->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 = $this->url . "chatgroups";$access_token = $this->getToken ();$header [] = 'Authorization: Bearer ' . $access_token;$result = $this->postCurl ( $url, $option, $header );return $result;}/*** 获取群组详情** @param*          $group_id*/public function chatGroupsDetails($group_id) {$url = $this->url . "chatgroups/" . $group_id;$access_token = $this->getToken ();$header [] = 'Authorization: Bearer ' . $access_token;$result = $this->postCurl ( $url, '', $header, $type = "GET" );return $result;}/*** 删除群组** @param*          $group_id*/public function deleteGroups($group_id) {$url = $this->url . "chatgroups/" . $group_id;$access_token = $this->getToken ();$header [] = 'Authorization: Bearer ' . $access_token;$result = $this->postCurl ( $url, '', $header, $type = "DELETE" );return $result;}/*** 获取群组成员** @param*          $group_id*/public function groupsUser($group_id) {$url = $this->url . "chatgroups/" . $group_id . "/users";$access_token = $this->getToken ();$header [] = 'Authorization: Bearer ' . $access_token;$result = $this->postCurl ( $url, '', $header, $type = "GET" );$info = json_decode($result,true);if(isset($info['data'])){return $info['data'];}else{return '0';}return $result;}/*** 群组添加成员** @param*          $group_id* @param*          $username*/public function addGroupsUser($group_id, $username) {$url = $this->url . "chatgroups/" . $group_id . "/users/" . $username;$access_token = $this->getToken ();$header [] = 'Authorization: Bearer ' . $access_token;$result = $this->postCurl ( $url, '', $header, $type = "POST" );return $result;}/*** 群组删除成员** @param*          $group_id* @param*          $username*/public function delGroupsUser($group_id, $username) {$url = $this->url . "chatgroups/" . $group_id . "/users/" . $username;$access_token = $this->getToken ();$header [] = 'Authorization: Bearer ' . $access_token;$result = $this->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 = $this->url . "chatmessages?" . $ql . "&limit=" . $limit . $cursor;$access_token = $this->getToken ();$header [] = 'Authorization: Bearer ' . $access_token;$result = $this->postCurl ( $url, '', $header, $type = "GET " );return $result;} //判断某个字段是否存在public function checkField($jsons){if($jsons->activated==true){print_r('11111');return true;}else{print_r('22222');return false;}}/*** 获取Token*/public function getToken() {//print_r($url);exit;$option ['grant_type'] = "client_credentials";$option ['client_id'] = $this->client_id;$option ['client_secret'] = $this->client_secret;$url = $this->url . "token";$fp = @fopen ( "easemob.txt", 'r' );if ($fp) {$arr = unserialize ( fgets ( $fp ) );if ($arr ['expires_in'] < time ()) {$result = $this->postCurl ( $url, $option, $head = 0 );//$result ['expires_in'] = $result ['expires_in'] + time ();@fwrite ( $fp, serialize ( $result ) );$myArr=json_decode($result, true);$token=$myArr['access_token'];return  $token;fclose ( $fp );exit ();}return $arr ['access_token'];fclose ( $fp );exit ();}$result = $this->postCurl ( $url, $option, $head = 0 );$result = json_decode($result);$result ['expires_in'] = $result ['expires_in'] + time ();$fp = @fopen ( "easemob.txt", 'w' );@fwrite ( $fp, serialize ( $result ) );return $result ['access_token'];fclose ( $fp );}/*** CURL Post*/private function postCurl($url, $option, $header = 0, $type = 'POST') {$curl = curl_init (); // 启动一个CURL会话curl_setopt ( $curl, CURLOPT_URL, $url ); // 要访问的地址curl_setopt ( $curl, CURLOPT_SSL_VERIFYPEER, FALSE ); // 对认证证书来源的检查curl_setopt ( $curl, CURLOPT_SSL_VERIFYHOST, FALSE ); // 从证书中检查SSL加密算法是否存在curl_setopt ( $curl, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)' ); // 模拟用户使用的浏览器if (! empty ( $option )) {$options = json_encode ( $option );curl_setopt ( $curl, CURLOPT_POSTFIELDS, $options ); // Post提交的数据包}curl_setopt ( $curl, CURLOPT_TIMEOUT, 30 ); // 设置超时限制防止死循环curl_setopt ( $curl, CURLOPT_HTTPHEADER, $header ); // 设置HTTP头curl_setopt ( $curl, CURLOPT_RETURNTRANSFER, 1 ); // 获取的信息以文件流的形式返回curl_setopt ( $curl, CURLOPT_CUSTOMREQUEST, $type );$result = curl_exec ( $curl ); // 执行操作//$res = object_array ( json_decode ( $result ) );//$res ['status'] = curl_getinfo ( $curl, CURLINFO_HTTP_CODE );//pre ( $res );curl_close ( $curl ); // 关闭CURL会话return $result;}//登录成功后自动检测帐户信息,如果没有创建则创建public function autoRegister($username){$hasAccount= $this->userDetails($username) ;if($hasAccount){return '1';}else{}}//登录public function  login(){session_start(); $sessionid = session_id();//得到sessionid//echo $sessionid ;//声明一个json数组$value=array();$username=trim($_REQUEST['username']);$password=trim($_REQUEST['password']);// $DH=$db->get_one("select * from $thistable where  (username='".trim($username)."' or mobile='".trim($username)."' or (email='".trim($username)."' and email_yz=1)) and del=0 ");$islogin=loginaddpoint($username,$password,$type=""); $user_id = $islogin;if($islogin>0){//数据库获取用户所有信息$umodel = M('user','jo2_');$U=$umodel -> where("userid='".$user_id."'") -> find();//var_dump($U);$_SESSION["userid"]=$U["userid"];$_SESSION["username"]=$U["username"];$_SESSION["usertype"]=$U["type"];$_SESSION["sessionid"]=$sessionid;$U['face']=$siteurl.$U['face'];$U['face_s']=$U['face_s']?$siteurl.$U['face_s']:'';$value['sessionid']=$sessionid;$value['account'] = $U['username'];$value['user_id'] = $U['userid'];$value['msg'] = "登陆成功!";$value['code'] = "200";if($_GET[isdz]=="1"){$json=json_encode($U);}else{$json=json_encode($value);}echo $json;}else if($islogin == -2){$value['msg'] = "密码错误!";$value['code'] = "101";$json=json_encode($value);echo $json;}else if($islogin == -1){$value['msg'] = "用户名和密码不能为空!";$value['code'] = "102";$json=json_encode($value);echo $json;}else if($islogin === 0){$value['msg'] = "账号不存在!";$value['code'] = "103";$json=json_encode($value);echo $json;}   }
}

环信服务端集成(PHP)相关推荐

  1. Java IM环信服务端集成之用户注册(三)

    移动端用户注册 VS 环信IM 用户注册 一.IM 用户管理 注册 IM 用户[单个] 在 URL 指定的 org 和 APP 中创建一个新的用户,分两种模式:开放注册和授权注册. "开放注 ...

  2. 环信java_java环信服务端注册IM代码

    https://github.com/easemob/emchat-server-examples 里面包含各种语言版本,我只下载了java版emchat-server-java 把代码放到自己的项目 ...

  3. Java 阿里云短信服务的集成

    Java 阿里云短信服务的集成 1.短信发送API(SendSms)---JAVA  [ https://help.aliyun.com/document_detail/55284.html?spm= ...

  4. java服务端集成信鸽推送

    java服务端集成信鸽推送 最近项目需要集成推送功能,突发奇想的选了信鸽推送(可能是最近一直在用阿里的东西),没想到这坑不是一般的多,而且关于详细的集成案例,度娘上真是没一个能入眼的.算了,别的不多说 ...

  5. 环信PHP服务端demo下载,环信(easemob) v3 接口服务端集成

    Laravel-easemob laravel-easemob 将环信 v3.0 服务端的操作进行了封装, 查看环信官方文档 Install composer 安装 composer require ...

  6. 【2021环信IM快速集成指南】PC Web、Uni-App、小程序集成都在这里了

    本文将直白且详细的描述一下如何集成环信web端的IM SDK,(小程序.Uni-app通用).这是一篇快速集成攻略,其中更多的是对于官网文档的一篇注释说明,相信很多的小伙伴在准备将环信的IM即时通讯能 ...

  7. 环信IM快速集成集成,实现客服功能(单聊)

    第一:你需要登入环信官网注册一个即时云通讯帐号和一个移动客服帐号. 创建一个自己的应用,获取APPkey等信息. 环信官网:http://www.easemob.com/ 第二:下载最新环信SDK,解 ...

  8. 环信即时通讯集成过程

    最近一直挺忙,使用了一些第三方的东西,也遇见了不少的问题,前面使用的一些还好,比如推送,分享这些第三方都比较容易集成,这次集成环信的即时通讯还是费了一些周折,刚弄完,赶紧记录一下. 一.前期需要注意的 ...

  9. 七(6)环信-用户体系集成-联系人管理

    课程总结 1.即时通信 环信通信 执行过程 2.用户体系集成 用户注册时分配环信账号 客户端获取环信账号,自动登录环信服务器 3.联系人业务处理 好友申请 查看联系人列表 一. 即时通信-环信介绍 1 ...

最新文章

  1. LeetCode题库第1题 两数之和
  2. 如何处理VMware启动虚拟机时的错误信息Failed to lock the file
  3. java8 streams_Java 8 Friday:使用Streams API时的10个细微错误
  4. lua 调用文件中的函数调用_深入Lua:调用相关的指令
  5. 谷歌浏览器下载的文件保存在哪里?
  6. Thinkpad SU使用方法FOR 2008
  7. python字典(dictionary)中get和items、iteritems方法
  8. 分治法的基本思想_归并排序-分治思想的典型应用
  9. git merge 暂存区_经典好文:一篇文章,教你学会Git
  10. mysql 5.7 binlog 压缩_MySQL binlog 压缩功能的相关介绍-爱可生
  11. python 立方体切割块数_用参数化su计算立方体切割体积
  12. 自动驾驶仿真:VTD的SCP命令详解
  13. 学习Vue3 第一章
  14. 透视宝移动端对Unity手机游戏引擎监控实现 1
  15. 给自己的网站装上SSL证书
  16. Kindle PaperWhite 2越狱教程
  17. Android RxJava应用:优雅实现网络请求嵌套回调
  18. python3强智教务系统个人课表爬虫
  19. 【浙政钉】第四篇:浙政钉创建群聊、消息接入、发送
  20. 深入学习Spring框架之一Spring的简要概括

热门文章

  1. HLS:卷积神经网络LeNet5的实现与测试
  2. vue 实现 换一换 功能
  3. 促销套路or营销探索?万和周年庆引发的创新思考
  4. 虎牙财报:中场缓步前行
  5. Redis 的安装及企业级应用
  6. 【数据聚类】第六章第一节:层次聚类算法概述、聚合和分裂方法
  7. mybatis和mybatisPlus中解决实体类字段与数据库关键字冲突问题
  8. QNET-网络测试工具
  9. YOLOv5小目标检测(方法与评价)
  10. 学习 Butterfly主题美化 这一篇就够了