php 环信easyui_环信服务端集成(PHP)

namespaceHome\Controller;

useThink\Controller;

/**

* 环信-服务器端REST API

*@author limx */classHXControllerextendsController {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做加密运算

*/publicfunctionopenRegister($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';

}

}

publicfunctiontest(){$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'] 密码

* 批量注册传二维数组

*/publicfunctionaccreditRegister($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 用户名

*/publicfunctionuserDetails($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'] 新密码

*/publicfunctioneditPassword($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 用户名

*/publicfunctiondeleteUser($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 按照创建时间来排序(降序)

*/publicfunctionbatchDeleteUser($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

*/publicfunctionaddFriend($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

*/publicfunctiondeleteFriend($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

*/publicfunctionshowFriend($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

*/publicfunctionisOnline($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

* 自定义参数

*/functionyy_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中所有的群组

*/publicfunctionchatGroups() {$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'] //群组成员,此属性为可选的

*/publicfunctioncreateGroups($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

*/publicfunctionchatGroupsDetails($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

*/publicfunctiondeleteGroups($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

*/publicfunctiongroupsUser($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

*/publicfunctionaddGroupsUser($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

*/publicfunctiondelGroupsUser($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

*/publicfunctionchatRecord($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;

}

//判断某个字段是否存在publicfunctioncheckField($jsons){if($jsons->activated==true){

print_r('11111');

returntrue;

}else{

print_r('22222');

returnfalse;

}

}

/**

* 获取Token

*/publicfunctiongetToken() {//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

*/privatefunctionpostCurl($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;

}

//登录成功后自动检测帐户信息,如果没有创建则创建publicfunctionautoRegister($username){$hasAccount= $this->userDetails($username) ;

if($hasAccount){

return'1';

}else{

}

}

//登录publicfunctionlogin(){

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;

}elseif($islogin == -2){

$value['msg'] = "密码错误!";

$value['code'] = "101";

$json=json_encode($value);

echo$json;

}elseif($islogin == -1){

$value['msg'] = "用户名和密码不能为空!";

$value['code'] = "102";

$json=json_encode($value);

echo$json;

}elseif($islogin === 0){

$value['msg'] = "账号不存在!";

$value['code'] = "103";

$json=json_encode($value);

echo$json;

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值