PHP对接环信im
2021/11/8 14:09:53
本文主要是介绍PHP对接环信im,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
class Chat { protected $org_name = 'xxx'; protected $app_name = 'demo'; protected $grant_type = 'XXXX'; protected $client_id = 'XXXX'; protected $client_secret = 'XXXX'; protected $RESTApi = 'http://a1.easemob.com/'; //header token public function access_token(){ session_start(); $_SESSION['expires_in'] = $_SESSION['expires_in'] ?? null; dd($_SESSION); if(time()< $_SESSION['expires_in']) $token= $_SESSION['token']; if(time()> $_SESSION['expires_in']) { $_SESSION['expires_in']= $_SESSION['token'] = null; $data = [ 'grant_type' => $this->grant_type, 'client_id' => $this->client_id, 'client_secret' => $this->client_secret, ]; $url = $this->RESTApi . $this->org_name . '/' . $this->app_name . '/token'; $data = json_encode($data); $result = $this->httpsCurl($url, $data, 'POST'); $result = json_decode($result, true); $_SESSION['expires_in'] = time() + $result['expires_in']; $_SESSION['token'] = $result['access_token']; $token =$_SESSION['token']; } return $token; } //注册用户 public function registerUser() { $url = $this->RESTApi.$this->org_name.'/'.$this->app_name.'/users'; $data = [ 'username'=>'11111', 'password'=>'123456', ]; $data = json_encode($data); $token = $this->access_token(); $result = $this->postCurlHeader($url,$token,$data); $result = json_decode($result,true); if(empty($result['path'])) return echoArr(0,'注册失败'); return echoArr(1,'注册成功'); } // 发送消息-文本 public function seedMessage() { $url = $this->RESTApi.$this->org_name. '/' .$this->app_name.'/messages'; $token = $this->access_token(); $data = [ 'target_type'=>'users', 'target'=>["1570845"], 'msg'=>[ 'type'=>'txt', 'msg'=>'testmessage', ], 'from'=>'1570845', ]; $data = json_encode($data); $result = $this->postCurlHeader($url,$token,$data); ; $result = json_decode($result,true); if(!empty($result['path'])) return echoArr(0,'发送失败'); return echoArr(1,'注册成功'); } /** * curl post 请求 不带header * */ public function httpsCurl($url,$data='',$method='GET') { $curl = curl_init(); curl_setopt($curl, CURLOPT_URL,$url); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($curl, CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($curl, CURLOPT_AUTOREFERER, 1); if($method=='POST') { curl_setopt($curl, CURLOPT_POST, 1); if ($data !='') { curl_setopt($curl, CURLOPT_POSTFIELDS,$data); } } curl_setopt($curl, CURLOPT_TIMEOUT, 30); curl_setopt($curl, CURLOPT_HEADER, 0); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec($curl); curl_close($curl); return $result; } /** * curl post header * @param $url * @param $token * @param $data * @return bool|string */ public function postCurlHeader($url,$token,$data) { $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => $url, CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_POSTFIELDS => $data, CURLOPT_HTTPHEADER => array( "Authorization: Bearer ".$token, "Content-Type: application/json", "Accept: application/json" ), )); $response = curl_exec($curl); curl_close($curl); return $response; } public function mytestAction($url,$token,$postBody=[]){ // $appkey='123'; // $appSecret='456'; $headers = array(); $headers[] = "Authorization:Bearer ".$token; $headers[] = "Content-Type:application/json"; $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);//设置请求头 curl_setopt($curl, CURLOPT_HTTPGET, true); // curl_setopt($curl, CURLOPT_POSTFIELDS, $postBody);//设置请求体 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');//使用一个自定义的请求信息来代替"GET"或"HEAD"作为HTTP请求。(这个加不加没啥影响) $data = curl_exec($curl); return $data; } }
这篇关于PHP对接环信im的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-11开源 PHP 商城项目 CRMEB 二次开发和部署教程
- 2024-11-09怎么使用php在kaufland平台刊登商品?-icode9专业技术文章分享
- 2024-11-05PHP的抽象类和接口是什么,有什么区别-icode9专业技术文章分享
- 2024-11-01开源 PHP 商城项目 CRMEB 安装和使用教程
- 2024-11-01用php和mysql写无限分类,有哪几种方法-icode9专业技术文章分享
- 2024-10-31php数据分表导出时部分数据无法导出什么原因-icode9专业技术文章分享
- 2024-10-30有经验的 PHP 开发者学习一门新的编程语言,有哪些推荐的有前景的语言-icode9专业技术文章分享
- 2024-10-21php 检测图片是否篡改过-icode9专业技术文章分享
- 2024-10-20fruitcake/php-cors 该怎么使用-icode9专业技术文章分享
- 2024-10-18PHP7.1可以使用哪个版本的swoole-icode9专业技术文章分享