环信-(php)服务器端REST API

环信-(php)服务器端REST API

<?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;
        }
 
    }
}

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/112332.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • android activity singletask,Android Activity启动模式之singleTask实例详解

    android activity singletask,Android Activity启动模式之singleTask实例详解本文实例分析了AndroidActivity启动模式之singleTask。分享给大家供大家参考,具体如下:前面的文章介绍了Android活动Activity的启动模式:standard和singleTop。本文继续介绍Activity的下一个启动模式:singleTask。singleTask:当设置活动的启动模式为singleTask时,首先检查返回栈中是否存在当前活动,如果存在当前活…

  • jmeter正则表达式提取器怎么使用_jmeter的正则表达式

    jmeter正则表达式提取器怎么使用_jmeter的正则表达式转载:https://www.cnblogs.com/du-hong/p/13217399.html允许用户使用正则表达式从服务器响应中提取值。作为后处理器,此元素将在其范围内的每个Sample请求之后执行,应用正则表达式,提取请求的值,生成模板字符串,并将结果存储到给定的变量名称中。1、我们先来看看这个正则表达式提取器长得是啥样子,路径:线程组>添加>后置处理器>正则表达式提取器,如下图所示:2、关键参数说明如下:Name:名称,可以随意设置,甚至为空;Comme

  • dedecms的include文件夹是干什么的?

    dedecms的include文件夹是干什么的?

  • vim命令下显示行号[通俗易懂]

    vim默认不显示行号如何使vim命令显示行号?显示当前行行号在vim的命令模式下,在光标停留处,退出命令模式,然后输入:nu,即可显示当前这行的号码显示所有行号如果要显示该文件的所有行号,则需要在vim的命令模式下,输入:setnu,则可以显示该文件的所有行号取消所有行号如果要显示该文件的所有行号,则需要在vim的命令模式下输入,在光标停留处,退出命令模式,然后输入:setnonu,即可显示当前这行的号码这样的设置方法只能维持在,当前vim打开的文件…

  • pytest重试_联系人去重失败

    pytest重试_联系人去重失败安装:pip3installpytest-rerunfailures重新运行所有失败用例要重新运行所有测试失败的用例,请使用–reruns命令行选项,并指定要运行测试的最大次数:$py

  • 亚马逊AWS服务器CentOS/Linux系统Shell安装Nginx及配置自启动

    亚马逊AWS服务器CentOS/Linux系统Shell安装Nginx及配置自启动

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号