入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

环信即时通讯-服务器端集成(REST API)-php版demo

创建时间:2016-01-07 投稿人: 浏览次数:4458

原文地址:http://www.thinkphp.cn/code/1259.html

注意问题:获取APP管理员Token有次数限制,获取后需要缓存起来。

<?php
 class Hxcall
 {
    
    private $app_key = "qqqqqq#aaaaaa";
    private $client_id = "sdasdasdasd";
    private $client_secret = "sdsdsdsdsd";
    private $url = "https://a1.easemob.com/qqqqqq/aaaaaa";
    /*
     * 获取APP管理员Token
     */
    function __construct()
    {
      if(file_exists("./Application/Library/Token/token") && time()-filemtime("./Application/Library/Token/token")<=86400){
    $this->token = file_get_contents("./Application/Library/Token/token");
     }else{

  $url = $this->url . "/token";
        $data = array(
            "grant_type" => "client_credentials",
            "client_id" => $this->client_id,
            "client_secret" => $this->client_secret
        );
        $rs = json_decode($this->curl($url, $data), true);

        $this->token = $rs["access_token"];

  file_put_contents("./Application/Library/Token/token", $rs["access_token"]);

 }
    }
    /*
     * 注册IM用户(授权注册)
     */
    public function hx_register($username, $password, $nickname)
    {
        $url = $this->url . "/users";
        $data = array(
            "username" => $username,
            "password" => $password,
            "nickname" => $nickname
        );
        $header = array(
            "Content-Type: application/json",
            "Authorization: Bearer " . $this->token
        );
        return $this->curl($url, $data, $header, "POST");
    }
    /*
     * 给IM用户的添加好友
     */
    public function hx_contacts($owner_username, $friend_username)
    {
        $url = $this->url . "/users/${owner_username}/contacts/users/${friend_username}";
        $header = array(
            "Authorization: Bearer " . $this->token
        );
        return $this->curl($url, "", $header, "POST");
    }
    /*
     * 解除IM用户的好友关系
     */
    public function hx_contacts_delete($owner_username, $friend_username)
    {
        $url = $this->url . "/users/${owner_username}/contacts/users/${friend_username}";
        $header = array(
            "Authorization: Bearer " . $this->token
        );
        return $this->curl($url, "", $header, "DELETE");
    }
    /*
     * 查看好友
     */
    public function hx_contacts_user($owner_username)
    {
        $url = $this->url . "/users/${owner_username}/contacts/users";
        $header = array(
            "Authorization: Bearer " . $this->token
        );
        return $this->curl($url, "", $header, "GET");
    }
    
    /* 发送文本消息 */
    public function hx_send($sender, $receiver, $msg)
    {
        $url = $this->url . "/messages";
        $header = array(
            "Authorization: Bearer " . $this->token
        );
        $data = array(
            "target_type" => "users",
            "target" => array(
                "0" => $receiver
            ),
            "msg" => array(
                "type" => "txt",
                "msg" => $msg
            ),
            "from" => $sender,
            "ext" => array(
                "attr1" => "v1",
                "attr2" => "v2"
            )
        );
        return $this->curl($url, $data, $header, "POST");
    }
    /* 查询离线消息数 获取一个IM用户的离线消息数 */
    public function hx_msg_count($owner_username)
    {
        $url = $this->url . "/users/${owner_username}/offline_msg_count";
        $header = array(
            "Authorization: Bearer " . $this->token
        );
        return $this->curl($url, "", $header, "GET");
    }
    
    /*
     * 获取IM用户[单个]
     */
    public function hx_user_info($username)
    {
        $url = $this->url . "/users/${username}";
        $header = array(
            "Authorization: Bearer " . $this->token
        );
        return $this->curl($url, "", $header, "GET");
    }
    /*
     * 获取IM用户[批量]
     */
    public function hx_user_infos($limit)
    {
        $url = $this->url . "/users?${limit}";
        $header = array(
            "Authorization: Bearer " . $this->token
        );
        return $this->curl($url, "", $header, "GET");
    }
    /*
     * 重置IM用户密码
     */
    public function hx_user_update_password($username, $newpassword)
    {
        $url = $this->url . "/users/${username}/password";
        $header = array(
            "Authorization: Bearer " . $this->token
        );
        $data["newpassword"] = $newpassword;
        return $this->curl($url, $data, $header, "PUT");
    }
    
    /*
     * 删除IM用户[单个]
     */
    public function hx_user_delete($username)
    {
        $url = $this->url . "/users/${username}";
        $header = array(
            "Authorization: Bearer " . $this->token
        );
        return $this->curl($url, "", $header, "DELETE");
    }
    /*
     * 修改用户昵称
     */
    public function hx_user_update_nickname($username, $nickname)
    {
        $url = $this->url . "/users/${username}";
        $header = array(
            "Authorization: Bearer " . $this->token
        );
        $data["nickname"] = $nickname;
        return $this->curl($url, $data, $header, "PUT");
    }
    /*
     *
     * curl
     */
    private function curl($url, $data, $header = false, $method = "POST")
    {
        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        if ($header) {
            curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
        }
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
        if ($data) {
            curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
        }
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        $ret = curl_exec($ch);
        return $ret;
    }
 }
 $rs = new Hxcall();
 // 注册的用户
 //echo $rs->hx_register("qwerasd", "qazwsx", "福州123" );
 // 给IM用户的添加好友
 // echo $rs->hx_contacts("admin888", "qwerasd");
 /* 发送文本消息 */
 // echo $rs->hx_send("213123","admin888","dfadsr214wefaedf");
 /* 消息数统计 */
 // echo $rs->hx_msg_count("admin888");
 /* 获取IM用户[单个] */
 // echo $rs->hx_user_info("admin888");
 /* 获取IM用户[批量] */
 echo $rs->hx_user_infos("20");
 /* 删除IM用户[单个] */
 // echo $rs->hx_user_delete("wwwwww");
 /* 修改用户昵称 */
 // echo $rs->hx_user_update_nickname("asaxcfasdd","网络科技");
 /* 重置IM用户密码 */
 // echo $rs->hx_user_update_password("asaxcfasdd","asdad");
 /* 解除IM用户的好友关系 */
 // echo $rs->hx_contacts_delete("admin888", "qqqqqqqq");
 /* 查看好友 */
 //echo $rs->hx_contacts_user("admin888");

声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。