视频网站56网的SDK
视频网站56网的SDK br / br / 详细信息请点击 a target=_blank href=http://dev.56.com/ rel=nofollowspan style=font-size:32px;color:#e53333;56网开放平台/span/a img src=http://www.oschina.net/js/ke/plugins/emoticons/42.gif alt= /
视频网站56网的SDK
详细信息请点击 56网开放平台
详细信息请点击 56网开放平台

<?php
/**
* @description PHP SDK for 56 网 v2.0 (include using OAuth2),support by 56 open platform team
* @
* /
/**
* @description 设定时区.
*/
define('API_TIMEZONE_OFFSET',8);
if(function_exists('date_default_timezone_set')) {
@date_default_timezone_set('Etc/GMT'.(API_TIMEZONE_OFFSET > 0 ? '-' : '+').(abs(API_TIMEZONE_OFFSET)));
} else {
putenv('Etc/GMT'.(API_TIMEZONE_OFFSET > 0 ? '-' : '+').(abs(API_TIMEZONE_OFFSET)));
}
/**
* @description 常用配置.
*/
error_reporting(E_ALL);
define('APPKEY','1000000010');
define('APPSECRET','0e4f13954bc537ec');
/**
* @description 在oauth认证中请求的token
*/
define('ACCESS_TOKEN','');
define('CONNECT_TIMEOUT', 5);
define('READ_TIMEOUT', 5);
/**
* @description 56网的接口类
*
* @package open56Client
*/
class open56Client extends Exception{
/**
* 应用appkey
*/
public $appkey;
/**
* 应用secret
*/
public $secret;
/**
* 接口访问host
*/
public $domain = "http://oapi.56.com";
/**
* 用户授权access_token
*/
public $access_token;
/**
* 是否调试HTTP
*/
public $isDebugHttp = false;
public function __construct($appkey,$secret){
if(empty($appkey) || empty($secret)){
try {
throw new Exception("appkey or secret cannot be empty!");
} catch(Exception $e) {
echo $e->getMessage();
}
}
$this->appkey = $appkey;
$this->secret = $secret;
}
/**
* @description 设置access_token,提供需要oauth授权才能访问的接口设置用户access_token,该值参与客户端签名。
*
* @access public
* @param mixed $token
* @return void
*/
public function _setToken($token){
if(!empty($token)){
$this->access_token = $token;
}
return $this;
}
/**
* @description 简易上传组件地址
*
* return void
*/
public function uploadUrl(){
$url = $this->domain."/video/upload.plugin";
$params = array();
return $url.'?'.self::signRequest($params);
}
/**
* 复杂上传组件地址
*
* @param $sid 第三方的应用的用户名
* @param $css 获取的样式加密码
* @param $rurl 失败时跳转的页面,获取返回信息
* @param $ourl 成功时跳转的页面,获取返回信息
*/
public function customUrl($sid, $css, $rurl, $ourl){
$url = $this->domain."/video/custom.plugin";
$params = array('sid'=> $sid,'css'=> $css ,'rurl'=> $rurl,'ourl'=> $ourl);
return $url.'?'.self::signRequest($params);
}
/**
* @description 获取视频信息
*
* @param $flvid 56视频的flvid
* @link /video/getVideoInfo.json
* @return json
*/
public function getVideoInfoApp($flvid){
$url = $this->domain.'/video/getVideoInfo.json';
$params = array('vid'=>$flvid);
return self::getHttp($url,$params);
}
/**
* @description 获取更新视频信息的接口
*
* @param $flvid 56视频的flvid
* @param $title 56视频的名称
* @param $desc 56视频的名称的描述
* @param $tag 56视频的标签
* @link /video/update.json
* @return json
*/
public function updateApp($flvid,$title,$desc,$tag){
$url = $this->domain.'/video/update.json';
$params = array('vid'=>$flvid,'title'=>$title,'desc'=>$desc,'tag'=>$tag);
return self::getHttp($url,$params);
}
/*
* @description 根据关键字获取搜索结果
* $data = array(
* 'keyword'=> $keyword, //要查找的关键字
* 'c'=>1,
* 't'=>'month', 时间,默认为month
* 's'=>1,
* 'page'=>1, 当前页数
* 'rows'=>$rows, 10 每页显示多少个
* );
* @param $keyword 主要的字段,关键字搜索,其他的默认即可
* @link /video/search.json
* @return json
*/
public function searchVideo($data){
$url = $this->domain.'/video/search.json';
$params = array();
$params = array_merge($params,$data);
return self::getHttp($url,$params);
}
/**
* @description 获取用户的个人信息
*
* @param $userid 用户在56网站的user_id或视频的flvid
* @param $token oauth2认证后的令牌
* @link /user/userProfile.json
* @return json
*/
public function userInfo($userid){
$url = $this->domain.'/user/userProfile.json';
$params = array('userid'=>$userid,'access_token'=>$token);
return self::getHttp($url,$params);
}
/**
* @description 获取用户的上传的视频
*
* @param $userid 用户在56网站的user_id或视频的flvid
* @param $token oauth2认证后的令牌
* @link /user/userVideos.json
* @return json
*/
public function userVideos($userid){
$url = $this->domain.'/user/userVideos.json';
$params = array('userid'=>$userid,'access_token'=>$token,'s'=>'time','page'=>1,'rows'=>10);
return self::getHttp($url,$params);
}
/**
* @description 获得用户的评论或视频的评论
*
* @param $tid 用户在56网站的user_id或视频的flvid
* @param $type user/flv
* @param $token oauth2认证后的令牌
* @param $pct 1为普通视频 3是相册视频
* @return json
*/
public function userComments($tid = 'onesec', $type = 'user', $pct = 1){
$url = $this->domain.'/user/userComments.json';
$params = array('tid'=>$tid,'access_token'=>$token,'type'=> $type,'page'=>1,'rows'=>10, 'pct'=> $pct);
return self::getHttp($url,$params);
}
/**
* @description 获得频道的视频
*
* @access public
* @param string $cid
* @param string $page
* @param string $num
* @return json
*/
public function channelVideo($cid = '68', $page = '1', $num = '20'){
$url = $this->domain.'/video/channel.json';
$params = array('cid'=>$cid, 'page'=>$page, 'num'=>$num);
return self::getHttp($url,$params);
}
/**
* @description 获得推荐频道的视频
*
* @access public
* @param string $mid
* @param string $page
* @param string $num
* @return json
*/
public function recommendVideo($mid = '16', $page = '1', $num = '10'){
$url = $this->domain.'/video/recommend.json';
$params = array('mid'=>$mid, 'page'=>$page, 'num'=>$num);
return self::getHttp($url,$params);
}
/**
* @description 获得56网首页热门的视频
*
* @access public
* @param string $cid
* @param string $page
* @param string $num
* @return json
*/
public function hotVideo($cid = '2', $page = '1', $num = '10'){
$url = $this->domain.'/video/hot.json';
$params = array('cid'=>$cid, 'page'=>$page, 'num'=>$num);
return self::getHttp($url,$params);
}
/**
* @description 获得56网昨天或某天的推荐的相册视频
*
* @access public
* @param mixed $day
* @return json|void
*/
public function albumVideo($day){
$url = $this->domain.'/video/recAlbum.json';
$params = array('day'=>$day);
return self::getHttp($url,$params);
}
/**
* @description GET 方法
*
* @access private
* @param mixed $url
* @param array $params
* @return json
*/
public function getHttp($url,$params=array()){
$url = $url.'?'.self::signRequest($params);
return self::httpCall($url);
}
/**
* @description POST 方法
*
* @access private
* @param mixed $url
* @param mixed $params
* @return json
*/
public function postHttp($url,$params){
return self::httpCall($url,self::signRequest($params),'post');
}
/**
* @description curl method,post方法params字符串的位置不同于get
*
* @access public
* @param mixed $url
* @param string $params
* @param string $method
* @param mixed $connectTimeout
* @param mixed $readTimeout
* @return json
*/
public function httpCall($url ,$params = '',$method = 'get', $connectTimeout = CONNECT_TIMEOUT, $readTimeout = READ_TIMEOUT) {
$result = "";
if (function_exists('curl_init')) {
$timeout = $connectTimeout + $readTimeout;
/** Use CURL if installed... **/
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
if (strtolower($method)==='post'){
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
}
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $connectTimeout);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, '56.com API PHP5 Client 1.1 (curl) ' . phpversion());
$result = curl_exec($ch);
} else{
if (isset($params) and $params){
$url = $url."?".http_build_query($params);
}
/** Non-CURL based version... */
$ctx = stream_context_create(
array(
'http' => array(
'timeout' => 5 /** 设置一个超时时间,单位为秒 */
)
)
);
$result = file_get_contents($url, 0, $ctx);
}
return $result;
}
/**
* @description 签名方法实现,并构造一个参数串
*
* @access private
* @param mixed $params
* @return void
*/
public function signRequest($params){
if ($this->access_token){
$params['access_token'] = $this->access_token;
}
$keys = self::urlencodeRfc3986(array_keys($params));
$values = self::urlencodeRfc3986(array_values($params));
if($keys and $values){
$params = array_combine($keys,$values);
}else{
throw new Exception("signRequest need params exits!");
}
/**
* 先去除系统级参数
*/
unset($params['appkey']);
unset($params['ts']);
ksort($params);
/**
* 第一轮md5字符串
* */
$req = md5(http_build_query($params));
$ts = time();/**当次请求的时间戳**/
/**第二轮md5字符串,得到最后的签名变量,注意里面的顺序不可以改变否则结果错误!**/
$params['sign'] = md5($req.'#'.$this->appkey.'#'.$this->secret.'#'.$ts);
$params['appkey'] = $this->appkey;
$params['ts']=$ts;
return http_build_query($params);
}
/**
* @description 转码异常字符
*
* @access public
* @param mixed $input
* @return void
*/
public static function urlencodeRfc3986($input){
if (is_array($input)){
return array_map( array('open56Client', 'urlencodeRfc3986') , $input );
}else if( is_scalar($input)){
return str_replace( '+' , ' ' , str_replace( '%7E' , '~' , rawurlencode($input)));
}else{
return '';
}
}
}
3. [代码][PHP]代码 跳至 [2] [3] [全屏预览]
<?php
/**
* @description PHP SDK for 56 网 v2.0 (include using OAuth2),support by 56 open platform team
* @
* /
/**
* @description 设定时区.
*/
define('API_TIMEZONE_OFFSET',8);
if(function_exists('date_default_timezone_set')) {
@date_default_timezone_set('Etc/GMT'.(API_TIMEZONE_OFFSET > 0 ? '-' : '+').(abs(API_TIMEZONE_OFFSET)));
} else {
putenv('Etc/GMT'.(API_TIMEZONE_OFFSET > 0 ? '-' : '+').(abs(API_TIMEZONE_OFFSET)));
}
/**
* @description 常用配置.
*/
error_reporting(E_ALL);
define('APPKEY','1000000010');
define('APPSECRET','0e4f13954bc537ec');
/**
* @description 在oauth认证中请求的token
*/
define('ACCESS_TOKEN','');
define('CONNECT_TIMEOUT', 5);
define('READ_TIMEOUT', 5);
/**
* @description 56网的接口类
*
* @package open56Client
*/
class open56Client extends Exception{
/**
* 应用appkey
*/
public $appkey;
/**
* 应用secret
*/
public $secret;
/**
* 接口访问host
*/
public $domain = "http://oapi.56.com";
/**
* 用户授权access_token
*/
public $access_token;
/**
* 是否调试HTTP
*/
public $isDebugHttp = false;
public function __construct($appkey,$secret){
if(empty($appkey) || empty($secret)){
try {
throw new Exception("appkey or secret cannot be empty!");
} catch(Exception $e) {
echo $e->getMessage();
}
}
$this->appkey = $appkey;
$this->secret = $secret;
}
/**
* @description 设置access_token,提供需要oauth授权才能访问的接口设置用户access_token,该值参与客户端签名。
*
* @access public
* @param mixed $token
* @return void
*/
public function _setToken($token){
if(!empty($token)){
$this->access_token = $token;
}
return $this;
}
/**
* @description 简易上传组件地址
*
* return void
*/
public function uploadUrl(){
$url = $this->domain."/video/upload.plugin";
$params = array();
return $url.'?'.self::signRequest($params);
}
/**
* 复杂上传组件地址
*
* @param $sid 第三方的应用的用户名
* @param $css 获取的样式加密码
* @param $rurl 失败时跳转的页面,获取返回信息
* @param $ourl 成功时跳转的页面,获取返回信息
*/
public function customUrl($sid, $css, $rurl, $ourl){
$url = $this->domain."/video/custom.plugin";
$params = array('sid'=> $sid,'css'=> $css ,'rurl'=> $rurl,'ourl'=> $ourl);
return $url.'?'.self::signRequest($params);
}
/**
* @description 获取视频信息
*
* @param $flvid 56视频的flvid
* @link /video/getVideoInfo.json
* @return json
*/
public function getVideoInfoApp($flvid){
$url = $this->domain.'/video/getVideoInfo.json';
$params = array('vid'=>$flvid);
return self::getHttp($url,$params);
}
/**
* @description 获取更新视频信息的接口
*
* @param $flvid 56视频的flvid
* @param $title 56视频的名称
* @param $desc 56视频的名称的描述
* @param $tag 56视频的标签
* @link /video/update.json
* @return json
*/
public function updateApp($flvid,$title,$desc,$tag){
$url = $this->domain.'/video/update.json';
$params = array('vid'=>$flvid,'title'=>$title,'desc'=>$desc,'tag'=>$tag);
return self::getHttp($url,$params);
}
/*
* @description 根据关键字获取搜索结果
* $data = array(
* 'keyword'=> $keyword, //要查找的关键字
* 'c'=>1,
* 't'=>'month', 时间,默认为month
* 's'=>1,
* 'page'=>1, 当前页数
* 'rows'=>$rows, 10 每页显示多少个
* );
* @param $keyword 主要的字段,关键字搜索,其他的默认即可
* @link /video/search.json
* @return json
*/
public function searchVideo($data){
$url = $this->domain.'/video/search.json';
$params = array();
$params = array_merge($params,$data);
return self::getHttp($url,$params);
}
/**
* @description 获取用户的个人信息
*
* @param $userid 用户在56网站的user_id或视频的flvid
* @param $token oauth2认证后的令牌
* @link /user/userProfile.json
* @return json
*/
public function userInfo($userid){
$url = $this->domain.'/user/userProfile.json';
$params = array('userid'=>$userid,'access_token'=>$token);
return self::getHttp($url,$params);
}
/**
* @description 获取用户的上传的视频
*
* @param $userid 用户在56网站的user_id或视频的flvid
* @param $token oauth2认证后的令牌
* @link /user/userVideos.json
* @return json
*/
public function userVideos($userid){
$url = $this->domain.'/user/userVideos.json';
$params = array('userid'=>$userid,'access_token'=>$token,'s'=>'time','page'=>1,'rows'=>10);
return self::getHttp($url,$params);
}
/**
* @description 获得用户的评论或视频的评论
*
* @param $tid 用户在56网站的user_id或视频的flvid
* @param $type user/flv
* @param $token oauth2认证后的令牌
* @param $pct 1为普通视频 3是相册视频
* @return json
*/
public function userComments($tid = 'onesec', $type = 'user', $pct = 1){
$url = $this->domain.'/user/userComments.json';
$params = array('tid'=>$tid,'access_token'=>$token,'type'=> $type,'page'=>1,'rows'=>10, 'pct'=> $pct);
return self::getHttp($url,$params);
}
/**
* @description 获得频道的视频
*
* @access public
* @param string $cid
* @param string $page
* @param string $num
* @return json
*/
public function channelVideo($cid = '68', $page = '1', $num = '20'){
$url = $this->domain.'/video/channel.json';
$params = array('cid'=>$cid, 'page'=>$page, 'num'=>$num);
return self::getHttp($url,$params);
}
/**
* @description 获得推荐频道的视频
*
* @access public
* @param string $mid
* @param string $page
* @param string $num
* @return json
*/
public function recommendVideo($mid = '16', $page = '1', $num = '10'){
$url = $this->domain.'/video/recommend.json';
$params = array('mid'=>$mid, 'page'=>$page, 'num'=>$num);
return self::getHttp($url,$params);
}
/**
* @description 获得56网首页热门的视频
*
* @access public
* @param string $cid
* @param string $page
* @param string $num
* @return json
*/
public function hotVideo($cid = '2', $page = '1', $num = '10'){
$url = $this->domain.'/video/hot.json';
$params = array('cid'=>$cid, 'page'=>$page, 'num'=>$num);
return self::getHttp($url,$params);
}
/**
* @description 获得56网昨天或某天的推荐的相册视频
*
* @access public
* @param mixed $day
* @return json|void
*/
public function albumVideo($day){
$url = $this->domain.'/video/recAlbum.json';
$params = array('day'=>$day);
return self::getHttp($url,$params);
}
/**
* @description GET 方法
*
* @access private
* @param mixed $url
* @param array $params
* @return json
*/
public function getHttp($url,$params=array()){
$url = $url.'?'.self::signRequest($params);
return self::httpCall($url);
}
/**
* @description POST 方法
*
* @access private
* @param mixed $url
* @param mixed $params
* @return json
*/
public function postHttp($url,$params){
return self::httpCall($url,self::signRequest($params),'post');
}
/**
* @description curl method,post方法params字符串的位置不同于get
*
* @access public
* @param mixed $url
* @param string $params
* @param string $method
* @param mixed $connectTimeout
* @param mixed $readTimeout
* @return json
*/
public function httpCall($url ,$params = '',$method = 'get', $connectTimeout = CONNECT_TIMEOUT, $readTimeout = READ_TIMEOUT) {
$result = "";
if (function_exists('curl_init')) {
$timeout = $connectTimeout + $readTimeout;
/** Use CURL if installed... **/
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
if (strtolower($method)==='post'){
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
}
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $connectTimeout);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, '56.com API PHP5 Client 1.1 (curl) ' . phpversion());
$result = curl_exec($ch);
} else{
if (isset($params) and $params){
$url = $url."?".http_build_query($params);
}
/** Non-CURL based version... */
$ctx = stream_context_create(
array(
'http' => array(
'timeout' => 5 /** 设置一个超时时间,单位为秒 */
)
)
);
$result = file_get_contents($url, 0, $ctx);
}
return $result;
}
/**
* @description 签名方法实现,并构造一个参数串
*
* @access private
* @param mixed $params
* @return void
*/
public function signRequest($params){
if ($this->access_token){
$params['access_token'] = $this->access_token;
}
$keys = self::urlencodeRfc3986(array_keys($params));
$values = self::urlencodeRfc3986(array_values($params));
if($keys and $values){
$params = array_combine($keys,$values);
}else{
throw new Exception("signRequest need params exits!");
}
/**
* 先去除系统级参数
*/
unset($params['appkey']);
unset($params['ts']);
ksort($params);
/**
* 第一轮md5字符串
* */
$req = md5(http_build_query($params));
$ts = time();/**当次请求的时间戳**/
/**第二轮md5字符串,得到最后的签名变量,注意里面的顺序不可以改变否则结果错误!**/
$params['sign'] = md5($req.'#'.$this->appkey.'#'.$this->secret.'#'.$ts);
$params['appkey'] = $this->appkey;
$params['ts']=$ts;
return http_build_query($params);
}
/**
* @description 转码异常字符
*
* @access public
* @param mixed $input
* @return void
*/
public static function urlencodeRfc3986($input){
if (is_array($input)){
return array_map( array('open56Client', 'urlencodeRfc3986') , $input );
}else if( is_scalar($input)){
return str_replace( '+' , ' ' , str_replace( '%7E' , '~' , rawurlencode($input)));
}else{
return '';
}
}
}
精彩图集
精彩文章






