网易通讯与视频


最近做的一个项目.其中涉及到音视频,  开始使用的是环信,但时客户需要在,视频通话中,,附带美颜效果.环信这边联系客户好像没有这一块.所以又重新找了一个平台:网易云通讯与视频


文档地址:

http://dev.netease.im/docs/product/IM%E5%8D%B3%E6%97%B6%E9%80%9A%E8%AE%AF/%E6%9C%8D%E5%8A%A1%E7%AB%AFAPI%E6%96%87%E6%A1%A3/%E6%8E%A5%E5%8F%A3%E6%A6%82%E8%BF%B0

接口使用的过程 ,最主要的是一个checksum的生成,和请求参数的构造.


checksum的生成

/**
* 生成 checksum
*/
private function getCheckSum(){
   $hex_digits = self::HEX_DIGITS;
   $this->nonce;
   for($i=0;$i<128;$i++){
       //随机字符串最大128个字符,也可以小于该数
       $this->nonce.= $hex_digits[rand(0,15)];
   }
   $this->curTime = (string)(time());  //当前时间戳,以秒为单位

   $join_string = $this->appSecret.$this->nonce.$this->curTime;
   $this->checkSum = sha1($join_string);
}


请求参数的构造.

$postDataArray = array();
foreach ($data as $key=>$value){
   array_push($postDataArray, $key.'='.urlencode($value));
}
$postData = join('&', $postDataArray);

以下演示了几个实例,其他的api基本上都是一样的,只要上面的配置弄好,基本上没啥问题


<?php
/**
* Created by PhpStorm.
* User: [一秋]
* Date: 2018/2/2
* Time: 16:22
* Desc: 成功源于点滴
*/

namespace cmf\service;

//网易音视频

class WangYiService{
   private $appKey;
   private $appSecret;
   private $nonce;
   private $curTime;
   private $checkSum;
   const   HEX_DIGITS = "0123456789abcdef";

   public function __construct()
   {
       $this->appKey = '';
       $this->appSecret = '';
   }

   /**
    * 新建通讯用户id
    * @return array
    */
   public function createAccid($accid,$token){
       $url = 'https://api.netease.im/nimserver/user/create.action';
       $data= array(
           'accid' => $accid,
           'token'=>$token
       );
       $result = $this->postDataCurl($url,$data);
       return $result;

   }

   /**
    * 更新用户基本信息
    * @return array
    */
   public function updateAccid($accid){

       $url = 'https://api.netease.im/nimserver/user/update.action';
       $data= array(
           'accid' => $accid
       );
       $result = $this->postDataCurl($url,$data);
       return $result;
   }

   /**
    * 更新token
    * @param $accid
    * @return array
    *
    */
   public function refreshToken($accid){
       $url = 'https://api.netease.im/nimserver/user/refreshToken.action';
       $data= array(
           'accid' => $accid
       );
       $result = $this->postDataCurl($url,$data);
       return $result;
   }

   /**
    * 封禁网易云通信ID
    */
   public function blockAccid($accid){
       $url = 'https://api.netease.im/nimserver/user/block.action';
       $data= array(
           'accid' => $accid,
           'needkick'=>true  //是否踢掉被禁用户,truefalse,默认false
       );
       $result = $this->postDataCurl($url,$data);
       return $result;
   }

   /**
    * 解禁网易云通信ID
    */
   public function unblockAccid($accid){
       $url = 'https://api.netease.im/nimserver/user/unblock.action';
       $data= array(
           'accid' => $accid
       );
       $result = $this->postDataCurl($url,$data);
       return $result;
   }



   public function postDataCurl($url,$data){
       $this->getCheckSum();       //发送请求前需先生成checkSum

       $timeout = 5000;
       $http_header = array(
           'AppKey:'.$this->appKey,
           'Nonce:'.$this->nonce,
           'CurTime:'.$this->curTime,
           'CheckSum:'.$this->checkSum,
           'Content-Type:application/x-www-form-urlencoded;charset=utf-8'
       );

       $postDataArray = array();
       foreach ($data as $key=>$value){
           array_push($postDataArray, $key.'='.urlencode($value));
       }
       $postData = join('&', $postDataArray);

       $ch = curl_init();
       curl_setopt ($ch, CURLOPT_URL, $url);
       curl_setopt ($ch, CURLOPT_POST, 1);
       curl_setopt ($ch, CURLOPT_POSTFIELDS, $postData);
       curl_setopt ($ch, CURLOPT_HEADER, false );
       curl_setopt ($ch, CURLOPT_HTTPHEADER,$http_header);
       curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER,false); //处理http证书问题
       curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
       curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);

       $result = curl_exec($ch);
       if
本人主要从事APP,小程序开发,有专业的团队。微信:wqy0601415 (请注明需求);

上一篇: 手机网站支付宝支付
下一篇: php.ini 配置调优 —— 让 PHP 应用性能维持在更高水平