直接(独立)授权

一、功能路径

我的直播 --> 频道设置-->观看条件设置-->直接授权

二、功能介绍

打开直播观看页的时候URL需带上指定的参数,经过直播系统验证请求合法后,直接进入直播观看页,同时将用户所传参数作为观看页的观众信息进行设置,要求接口返回的观众账号具有唯一性,即同一个账号不能在两个地方同时登录,较早登录的账号会被踢出。

直接授权

  1. Secretkey:用于校验签名的生成。

三、直接授权流程详解

1. 将频道设置为直接授权后,通过后台或者api接口获取到用户直接授权观看条件的secretkey

2. 在请求保利威视直播观看页时需带上相关参数,如
https://live.polyv.cn/watch/125527?userid=6b3a43&ts=1498547407000&sign=dd9dc9e42ad7c0204398e925a4ee0f46&nickname=viewerTests&avatar=http://livestatic.videocc.net/assets/wimages/missing_face.png

3.  直播系统会对用户提交的sign参数的值做比较判断是否合法,一次成功请求后,该链接将失效(sign只能成功使用一次)
如果合法,直播系统将使用nickname、userid、avatar,进入到保利威视直播观看页
聊天区将显示学员的昵称和头像。如果验证失败,则显示错误页面。

四、参数说明

参数 类型 必填 说明
userid string(仅支持英文大小写、数字和下划线) 观众ID,需要保证唯一性
ts long 13位毫秒级时间戳
sign string 用于校验的签名,生成规则是secretkey + userid + secretkey + ts进行MD5加密
nickname string 观众昵称,需要进行url安全的base64编码
avatar string 观众头像的url地址
param4 string 统计观众观看日志的自定义参数,需要先进行base64加密后再进行urlencode
param5 string 统计观众观看日志的自定义参数,需要先进行base64加密后再进行urlencode

五、代码示例(PHP)

<?php
$secretkey = "qwertyui"; //后台secretKey
$userid = "test" . rand(0, 5); //直播的用户ID
$ts = time() * 1000; //当前时间
$sign = md5($secretkey . $userid . $secretkey . $ts); //用于校验的sign
$nickname = urlencode(base64_encode("保利威")); //学员的昵称
$avatar = "http://live.polyv.net/assets/images/avatars/9avatar.jpg"; //学员的头像
$url = "https://live.polyv.cn/watch/108008";
$callbackUrl = $url . "?userid=" . $userid . "&nickname=" . $nickname . "&avatar=" . $avatar . "&ts=" . $ts . "&sign=" . $sign;
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>login</title>
</head>
<body>
<div id="btn">
<input type="button" onclick="openurl()" value="独立授权观看" class="btn" >
</div>
<script>
function openurl(){
location.href="<?php
echo $callbackUrl ?>";
};
</script>
</form>
</body>
</html>

六、展示效果

http://demo.polyv.net/wfy/directAuth.php

七、注意事项

  1. .要保证提交的userid的唯一性,当多个观众使用同一个userid进入观看页时,较早登录的观众会被后面登录的观众踢出,观看页会提示 "帐号在另外的地方登录,您将被退出观看。"如下图:
    被踢
以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

下载页面登记观看记录

接口URL

https://api.polyv.net/live/v3/channel/auth/download-record-info

接口说明

1、接口用于下载频道的登记观看列表,包含登记观看记录字段和数据内容
2、接口支持https

支持格式

JSON

请求方式

GET

请求数限制

TRUE

请求参数

参数名 必选 类型 说明
appId string 从API设置中获取,在直播系统登记的appId
timestamp long 13位当前时间戳
sign string 签名值
rank int 1为首要条件,2为次要条件。影响导出的表格表头
channelId int 频道号

响应成功说明:

响应成功时,接口将返回文件流,格式为.xls,内容为导出的登记观看记录数据。

响应失败JSON示例:

未输入appId

{
    "code": 400,
    "status": "error",
    "message": "appId is required.",
    "data": ""
}

appId不正确

{
    "code": 400,
    "status": "error",
    "message": "application not found.",
    "data": ""
}

时间戳错误

{
    "code": 400,
    "status": "error",
    "message": "invalid timestamp.",
    "data": ""
}

签名错误

{
    "code": 403,
    "status": "error",
    "message": "invalid signature.",
    "data": ""
}

频道不存在

{
    "code": 404,
    "status": "error",
    "message": "channel not found.",
    "data": ""
}

字段说明

参数名 说明
code 响应代码,失败为400,签名错误为401,异常错误500
status 成功为success,失败为error
message 错误时为错误提示消息
data 错误时为空串

php构建下载链接示例

<?php
//引用config.php
include '/srv/http/local.php';

$channelId="206204";

$params = array(
  'appId' => $appId,
  'timestamp' => $timestamp,
  'channelId' => $channelId,
  'rank' => '1'
);

//生成sign
$sign = getSign($params); //详细查看config.php文件的getSign方法
$params['sign'] = $sign;

$url = "http://api.polyv.net/live/v3/channel/auth/download-record-info?".http_build_query($params);
// 输出构建后的下载链接
echo $url;
?>

签名规则(config.php文件代码查看)

http://dev.polyv.net/2018/liveproduct/l-api/rule/sign/

以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

获取频道或全局登记观看字段

接口URL

https://api.polyv.net/live/v3/channel/auth/get-record-field

接口说明

1、接口用于获取频道或全局的登记观看字段
2、接口支持https

支持格式

JSON

请求方式

GET

请求数限制

TRUE

请求参数

参数名 必选 类型 说明
appId string 从API设置中获取,在直播系统登记的appId
timestamp long 13位当前时间戳
sign string 签名值
rank int 主要观看条件为1,次要观看条件为2
channelId int 频道号,不填为获取全局

响应成功JSON示例:

{
  "code": 200, 
  "status": "success", 
  "message": "", 
  "data": [
    {
      "type": "name", 
      "name": "姓名", 
      "options": null, 
      "placeholder": "请输入姓名"
    }, 
    {
      "type": "mobile", 
      "name": "手机号码", 
      "options": null, 
      "placeholder": "请输入手机号码"
    }, 
    {
      "type": "number", 
      "name": "数字", 
      "options": null, 
      "placeholder": "请输入数字"
    }, 
    {
      "type": "option", 
      "name": "性别", 
      "options": "男,女", 
      "placeholder": "请选择性别"
    }
  ]
}

响应失败JSON示例:

未输入appId

{
    "code": 400,
    "status": "error",
    "message": "appId is required.",
    "data": ""
}

appId不正确

{
    "code": 400,
    "status": "error",
    "message": "application not found.",
    "data": ""
}

时间戳错误

{
    "code": 400,
    "status": "error",
    "message": "invalid timestamp.",
    "data": ""
}

签名错误

{
    "code": 403,
    "status": "error",
    "message": "invalid signature.",
    "data": ""
}

channelId为空

{
  "code": 400, 
  "status": "error", 
  "message": "param should not be empty: channelId", 
  "data": ""
}

频道不存在

{
  "code": 404, 
  "status": "error", 
  "message": "channel not found.", 
  "data": ""
}

频道非法

{
  "code": 403, 
  "status": "error", 
  "message": "illegal channel id: 206240", 
  "data": ""
}

字段说明

参数名 说明
code 响应代码,成功为200,失败为400,签名错误为401,异常错误500
status 成功为success,失败为error
message 错误时为错误提示消息
data 登记观看的字段信息
type 登记观看类型。name-姓名;mobile-手机号码;number-数字;option-下拉选择;text-文本
name 登记观看信息标题
placeholder 登记观看信息描述
options 登记观看为下拉选择时的选项,选项值以英文逗号分隔

php请求示例

<?php
//引用config.php
include 'config.php';

$channelId="206204";
$rank = "1";

$params = array(
  'appId' => $appId,
  'timestamp' => $timestamp,
  'rank' => $rank
);

//生成sign
$sign = getSign($params); //详细查看config.php文件的getSign方法
$params['sign'] = $sign;

$url = "http://api.polyv.net/live/v3/channel/auth/get-record-field?".http_build_query($params);

$curl = curl_init();
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_TIMEOUT, 500);
curl_setopt($curl, CURLOPT_URL, $url);
$res = curl_exec($curl);
curl_close($curl);

echo $res;
?>

签名规则(config.php文件代码查看)

http://dev.polyv.net/2018/liveproduct/l-api/rule/sign/

以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

获取页面登记观看列表

接口URL

https://api.polyv.net/live/v3/channel/auth/get-record-info

接口说明

1、接口用于获取频道的登记观看列表数据内容
2、接口支持https

支持格式

JSON

请求方式

GET

请求数限制

TRUE

请求参数

参数名 必选 类型 说明
appId string 从API设置中获取,在直播系统登记的appId
timestamp long 13位当前时间戳
sign string 签名值
channelId int 频道号
page int 要获取的页码,默认为1
pageSize int 每页数据量,默认为10

响应成功JSON示例:

{
  "code": 200, 
  "status": "success", 
  "message": "", 
  "data": {
    "pageNumber": 1, 
    "totalPages": 1, 
    "pageSize": 10, 
    "contents": [
      {
        "createdTime": 1531982204000, 
        "params": [
          "黄泉"
        ]
      }, 
      {
        "createdTime": 1531982194000, 
        "params": [
          "黄天"
        ]
      }, 
      {
        "createdTime": 1531982185000, 
        "params": [
          "小明"
        ]
      }, 
      {
        "createdTime": 1531814855000, 
        "params": [
          "ffff"
        ]
      }
    ]
  }
}

响应失败JSON示例:

未输入appId

{
    "code": 400,
    "status": "error",
    "message": "appId is required.",
    "data": ""
}

appId不正确

{
    "code": 400,
    "status": "error",
    "message": "application not found.",
    "data": ""
}

时间戳错误

{
    "code": 400,
    "status": "error",
    "message": "invalid timestamp.",
    "data": ""
}

签名错误

{
    "code": 403,
    "status": "error",
    "message": "invalid signature.",
    "data": ""
}

channelId为空

{
  "code": 400, 
  "status": "error", 
  "message": "param should not be empty: channelId", 
  "data": ""
}

channelId为非数字

{
  "code": 400, 
  "status": "error", 
  "message": "param is not number: channelId", 
  "data": ""
}

频道非法

{
  "code": 403, 
  "status": "error", 
  "message": "illegal channel id: 206240", 
  "data": ""
}

字段说明

参数名 说明
code 响应代码,成功为200,失败为400,签名错误为401,异常错误500
status 成功为success,失败为error
message 错误时为错误提示消息
data 分页的登记观看列表数据
pageNumber 当前页码
totalPages 页面总数
pageSize 每页数据量
contents 当前页面内容
createdTime 登记时间
params 登记的内容数据

php请求示例

<?php
//引用config.php
include '/srv/http/config.php';

$channelId="206204";

$params = array(
  'appId' => $appId,
  'timestamp' => $timestamp,
  'channelId' => $channelId,
  'page' => '1',
  'pageSize' => '10'
);

//生成sign
$sign = getSign($params); //详细查看config.php文件的getSign方法
$params['sign'] = $sign;

$url = "http://api.polyv.net/live/v3/channel/auth/get-record-info?".http_build_query($params);

$curl = curl_init();
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_TIMEOUT, 500);
curl_setopt($curl, CURLOPT_URL, $url);
$res = curl_exec($curl);
curl_close($curl);

echo $res;
?>

签名规则(config.php文件代码查看)

http://dev.polyv.net/2018/liveproduct/l-api/rule/sign/

以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

获取页面观看白名单列表

接口URL

https://api.polyv.net/live/v3/channel/auth/get-white-list

接口说明

1、接口用于获取全局或频道的观看条件白名单列表
2、接口支持https

支持格式

JSON

请求方式

GET

请求数限制

TRUE

请求参数

参数名 必选 类型 说明
appId string 从API设置中获取,在直播系统登记的appId
timestamp long 13位当前时间戳
sign string 签名值
rank int 1为首要条件,2为次要条件
channelId int 频道号,不传为获取全局设置
page int 要获取的页码,默认为1
pageSize int 每页数据量,默认为10
keyword string 关键词,可根据会员码和名称查询

响应成功JSON示例:

{
  "code": 200, 
  "status": "success", 
  "message": "", 
  "data": {
    "pageNumber": 1, 
    "totalPages": 4, 
    "pageSize": 5, 
    "contents": [
      {
        "name": "测试重构1", 
        "phone": "tes1", 
        "isVip": "N"
      }, 
      {
        "name": "测试重构10", 
        "phone": "tes10", 
        "isVip": "N"
      }, 
      {
        "name": "测试重构11", 
        "phone": "tes11", 
        "isVip": "N"
      }, 
      {
        "name": "测试重构12", 
        "phone": "tes12", 
        "isVip": "N"
      }, 
      {
        "name": "测试重构13", 
        "phone": "tes13", 
        "isVip": "N"
      }
    ]
  }
}

响应失败JSON示例:

未输入appId

{
    "code": 400,
    "status": "error",
    "message": "appId is required.",
    "data": ""
}

appId不正确

{
    "code": 400,
    "status": "error",
    "message": "application not found.",
    "data": ""
}

时间戳错误

{
    "code": 400,
    "status": "error",
    "message": "invalid timestamp.",
    "data": ""
}

签名错误

{
    "code": 403,
    "status": "error",
    "message": "invalid signature.",
    "data": ""
}

字段说明

参数名 说明
code 响应代码,成功为200,失败为400,签名错误为401,异常错误500
status 成功为success,失败为error
message 错误时为错误提示消息
data 分页的白名单列表数据
pageNumber 当前页码
totalPages 页面总数
pageSize 每页数据量
contents 当前页面内容
name 昵称(或备注)
phone 会员码

php请求示例

<?php
//引用config.php
include 'config.php';

$channelId="204758";

$params = array(
  'appId' => $appId,
  'timestamp' => $timestamp,
  'channelId' => $channelId,
  'rank' => '1',
  'page' => 1,
  'pageSize' => 5,
);

//生成sign
$sign = getSign($params); //详细查看config.php文件的getSign方法
$params['sign'] = $sign;

$url = "http://api.polyv.net/live/v3/channel/auth/get-white-list?".http_build_query($params);

$curl = curl_init();
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_TIMEOUT, 500);
curl_setopt($curl, CURLOPT_URL, $url);
$res = curl_exec($curl);
curl_close($curl);

echo $res;
?>

签名规则(config.php文件代码查看)

http://dev.polyv.net/2018/liveproduct/l-api/rule/sign/

以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

下载页面观看白名单列表

接口URL

https://api.polyv.net/live/v3/channel/auth/download-white-list

接口说明

1、接口用于下载全局或频道的观看条件白名单列表
2、接口支持https

支持格式

JSON

请求方式

GET

请求数限制

TRUE

请求参数

参数名 必选 类型 说明
appId string 从API设置中获取,在直播系统登记的appId
timestamp long 13位当前时间戳
sign string 签名值
rank int 1为首要条件,2为次要条件
channelId int 频道号,要下载的频道号,不传为全局设置

响应成功说明:

响应成功时,接口将返回文件流,格式为.xls,内容为白名单列表数据。

响应失败JSON示例:

未输入appId

{
    "code": 400,
    "status": "error",
    "message": "appId is required.",
    "data": ""
}

appId不正确

{
    "code": 400,
    "status": "error",
    "message": "application not found.",
    "data": ""
}

时间戳错误

{
    "code": 400,
    "status": "error",
    "message": "invalid timestamp.",
    "data": ""
}

签名错误

{
    "code": 403,
    "status": "error",
    "message": "invalid signature.",
    "data": ""
}

字段说明

参数名 说明
code 响应代码,失败为400,签名错误为401,异常错误500
status 成功为success,失败为error
message 错误时为错误提示消息
data 由于成功时直接返回文件流下载,所以这里为空串

php构建下载链接示例

<?php
//引用config.php
include 'config.php';

$channelId="204140";

$params = array(
  'appId' => $appId,
  'timestamp' => $timestamp,
  'rank' => '1'
);

//生成sign
$sign = getSign($params); //详细查看config.php文件的getSign方法
$params['sign'] = $sign;

$url = "http://api.polyv.net/live/v3/channel/auth/download-white-list?".http_build_query($params);
// 输出构建后的下载链接
echo $url;
?>

签名规则(config.php文件代码查看)

http://dev.polyv.net/2018/liveproduct/l-api/rule/sign/

以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

设置观看条件

接口URL

http://api.polyv.net/live/v3/channel/auth/update

接口说明

1、接口用于设置频道或全局的观看条件
2、主要观看条件为关闭时,次要观看条件不能为打开,否则返回参数错误
3、主要观看条件和次要观看条件为相同时,不能够同时打开,否则返回参数错误
4、接口支持https

支持格式

JSON

请求方式

POST

请求数限制

TRUE

请求参数

参数名 必选 类型 说明
appId string 从API设置中获取,在直播系统登记的appId
timestamp long 13位当前时间戳
sign string 签名值
channelId int 频道号,不传为全局设置
authSettings json 请求体中的json数据

注:这里的channelId,appId,timestamp,sign必须通过url传参,json数据通过请求体传参,如:
http://api.polyv.net/live/v3/channel/auth/update?channelId={{channelId}}&appId={{appId}}&timestamp={{timestamp}}&sign={{sign}}

authSettings详细说明

通用参数说明

参数名 必选 类型 说明
rank int 主要观看条件为1,次要观看条件为2
enabled string 是否开启,Y为开启,N为关闭
authType string 付费观看-pay,验证码观看-code,白名单观看-phone,登记观看-info,自定义授权观看-custom,外部授权-external

开启或关闭观看条件

{
    "authSettings": [{
        "rank": 1,
        "enabled": "N"
    },
    {
        "rank": 2,
        "enabled": "N"
    }]
}

付费观看

主要观看条件为付费观看,次要观看条件关闭,json数据格式如下:

{
    "authSettings": [{
        "rank": 1,
        "enabled": "Y",
        "authType": "pay",
        "payAuthTips": "给钱才能看",
        "price": "998",
        "watchEndTime": null,
        "validTimePeriod": null
    },
    {
        "rank": 2,
        "enabled": "N"
    }
    ]
}

参数说明

参数名 必选 类型 说明
payAuthTips string 欢迎语标题
price int 价格,单位为元
watchEndTime string 付费有效截止日期,格式为yyyy-MM-dd HH:mm
validTimePeriod int 付费有效时长,单位天

注:当watchEndTime和validTimePeriod都为空时,表示付费永久有效

验证码观看和白名单观看

主要观看条件为验证码观看,次要观看条件为白名单观看

设置观看条件为白名单观看时,必须已经存在白名单数据,否则设置失败。白名单可通过后台上传也可以通过上传白名单接口上传

{
    "authSettings": [{
        "rank": 1,
        "enabled": "Y",
        "authType": "code",
        "authCode": "polyv",
        "qcodeTips": "扫码关注XXX,获得观看码",
        "qcodeImg": "http://livestatic.polyv.net/xxxxx.png"
    },
    {
        "rank": 2,
        "enabled": "Y",
        "authType": "phone",
        "authTips": "会员通道"
    }
    ]
}

验证码观看参数说明

参数名 必选 类型 说明
authCode string 验证码
qcodeTips string 提示文案
qcodeImg string 公众号二维码地址

白名单观看参数说明

参数名 必选 类型 说明
authTips string 提示文案

登记观看

主要观看条件为登记观看

{
    "authSettings": [{
        "rank": 1,
        "enabled": "Y",
        "authType": "info",
        "infoFields": [
            {
                    "name": "姓名",
                    "type": "name",
                    "options": null,
                    "placeholder": null
                },
                {
                    "name": "从哪里来???",
                    "type": "text",
                    "options": null,
                    "placeholder": "请填写"
                },
                {
                    "name": "性别",
                    "type": "option",
                    "options": "男,女,你猜",
                    "placeholder": "请填写"
                },
                {   "name": "年龄",
                    "type": "number",
                    "options": null,
                    "placeholder": "请问你多大"
                },
                {
                    "name": "手机号",
                    "type": "mobile",
                    "options": null,
                    "placeholder": "留下你的号码",
                    "sms":"Y"
                }
        ]
    }
    ]
}

登记观看参数说明

参数名 必选 类型 说明
infoFields json 登记观看信息,上线为5个
name string 登记信息名,最多为8字符
type string 登记类型,姓名-name,文本-text,手机号码-mobile,数字-number,下拉选项-option
options string 下拉选项时,下拉的选项值,以英文逗号分割。选项个数上限为8个;选项内容最多为8字符
placeholder string 文本框输入提示,最多为8字符
sms string 短信验证开关,Y 开启,N 关闭

外部授权和自定义授权

主要观看条件为外部授权观看,次要条件为自定义授权观看

{
    "authSettings": [{
        "rank": 1,
        "enabled": "Y",
        "authType": "external",
        "externalKey": "zzxxccvvbb",
        "externalUri": "http://polyv.net",
        "externalRedirectUri": "http://12306.cn"
        },
    {
        "rank": 2,
        "enabled": "Y",
        "authType": "custom",
        "customKey": "aabbccddee",
        "customUri": "http://www.polyv.net"
    }
    ]
}

外部授权参数说明

参数名 必选 类型 说明
externalKey string SecretKey
externalUri string 自定义url
externalRedirectUri string 跳转地址

自定义授权json参数

参数名 必选 类型 说明
customKey string SecretKey
customUri string 自定义url

注:以上的json示例为同时设置两个观看条件,可以通过authSettings中只传递一个json对象来选择只控制主要观看条件或者次要观看条件。

响应成功JSON示例:

{
    "code": 200,
    "status": "success",
    "message": "",
    "data": true
}

响应失败JSON示例:

参数错误

{
    "code": 400,
    "status": "error",
    "message": "param validate error",
    "data": 400
}

未输入appId

{
    "code": 400,
    "status": "error",
    "message": "appId is required.",
    "data": ""
}

appId不正确

{
    "code": 400,
    "status": "error",
    "message": "application not found.",
    "data": ""
}

时间戳错误

{
    "code": 400,
    "status": "error",
    "message": "invalid timestamp.",
    "data": ""
}

签名错误

{
    "code": 403,
    "status": "error",
    "message": "invalid signature.",
    "data": ""
}

字段说明

参数名 说明
code 状态码,成功为200,签名失败为403,参数错误为400,服务端错误为500
status 成功为success,错误时为error
message 成功为"",错误时为错误描述信息
data 成功时为true,错误时为""

php请求示例

<?php
//引用config.php
include 'config.php';

$params = array(
  'appId' => $appId,
  'timestamp' => $timestamp,
  'channelId' => "206204"
);

//生成sign
$sign = getSign($params); //详细查看config.php文件的getSign方法

$json = '{
    "authSettings": [{
        "rank": 1,
        "enabled": "N"
    },
    {
        "rank": 2,
        "enabled": "N"
    }]
}';

$params["sign"] = $sign;
$url="http://api.polyv.net/live/v3/channel/auth/update?".http_build_query($params);

function post($url, $post_data = '', $timeout = 5){
   $ch = curl_init();
   curl_setopt ($ch, CURLOPT_URL, $url);
   curl_setopt ($ch, CURLOPT_POST, 1);
   if($post_data != ''){
      curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
   }

   curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
   curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
   curl_setopt($ch, CURLOPT_HEADER, false);
   curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'Content-Length: ' . strlen($post_data)));
   $file_contents = curl_exec($ch);
   curl_close($ch);
   return $file_contents;
}

echo post($url,$json);
?>

Java请求示例

import java.io.IOException;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.http.HttpEntity;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

import com.live.util.EncryptionUtils;

public class Demo {

    private static RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(15000).setConnectTimeout(15000)
            .setConnectionRequestTimeout(15000).build();

    public static void main(String[] args) {

        String url = "http://api.polyv.net/live/v3/channel/auth/update";
        String channelId = "频道号";
        String appId = "appId";
        String key = "secretKey";
        Map<String, String> map = new HashMap<>();
        String timestamp = Long.toString(System.currentTimeMillis());
        map.put("appId", appId);
        map.put("timestamp", "1533893354000");
        map.put("channelId", channelId);

        String sign = getSign(map, key);
        map.put("sign", sign);

        String body = "{\"authSettings\":[{\"rank\":1,\"enabled\":\"N\"},{\"rank\":2,\"enabled\":\"N\"}]}";
        String content = sendHttpPost(url, map, body);
        System.out.println(content);

    }

    /**
     * 发送 post请求
     * @param httpUrl 地址
     * @param maps 参数
     */
    public static String sendHttpPost(String httpUrl, Map<String, String> maps, String body) {
        StringBuilder url = new StringBuilder();
        url.append(httpUrl).append("?");
        for (Map.Entry<String, String> map : maps.entrySet()) {
            url.append(map.getKey()).append("=").append(map.getValue()).append("&");
        }
        String urlStr = url.toString().substring(0, url.length() - 1);

        System.out.println(urlStr);
        // 创建httpPost
        HttpPost httpPost = new HttpPost(urlStr);
        try {
            StringEntity entity = new StringEntity(body, Charset.forName("UTF-8"));
            httpPost.setEntity(entity);
        } catch (Exception e) {
            // ...
        }
        return sendHttpPost(httpPost);
    }

    /**
     * 发送Post请求
     * @param httpPost
     * @return
     */
    private static String sendHttpPost(HttpPost httpPost) {
        CloseableHttpClient httpClient = null;
        CloseableHttpResponse response = null;
        HttpEntity entity;
        String responseContent = null;
        try {
            // 创建默认的httpClient实例.
            httpClient = HttpClients.createDefault();
            httpPost.setConfig(requestConfig);
            // 执行请求
            response = httpClient.execute(httpPost);
            entity = response.getEntity();
            responseContent = EntityUtils.toString(entity, "UTF-8");
        } catch (Exception e) {
            // ...
        } finally {
            try {
                // 关闭连接,释放资源
                if (response != null) {
                    response.close();
                }
                if (null != httpPost) {
                    httpPost.releaseConnection();
                }
                if (httpClient != null) {
                    httpClient.close();
                }
            } catch (IOException e) {
                // ...
            }
        }
        return responseContent;
    }

    /**
     * 根据map里的参数构建加密串
     * @param map
     * @param secretKey
     * @return
     */
    protected static String getSign(Map<String, String> map, String secretKey) {
        Map<String, String> params = paraFilter(map);
        // 处理参数,计算MD5哈希值
        String concatedStr = concatParams(params);
        String plain = secretKey + concatedStr + secretKey;
        String encrypted = EncryptionUtils.md5Hex(plain);

        // 32位大写MD5值
        return encrypted.toUpperCase();
    }

    /**
     * 对params根据key来排序并且以key1=value1&key2=value2的形式拼接起来
     * @param params
     * @return
     */
    private static String concatParams(Map<String, String> params) {
        List<String> keys = new ArrayList<>(params.keySet());
        Collections.sort(keys);

        StringBuilder sb = new StringBuilder();

        for (int i = 0; i < keys.size(); i++) {
            String key = keys.get(i);
            String value = params.get(key);

            sb.append(key).append(value);
        }

        return sb.toString();
    }

    /**
     * 除去数组中的空值和签名参数
     * @param sArray 签名参数组
     * @return 去掉空值与签名参数后的新签名参数组
     */
    private static Map<String, String> paraFilter(Map<String, String> sArray) {

        Map<String, String> result = new HashMap<>();

        if (sArray == null || sArray.size() <= 0) {
            return result;
        }

        for (String key : sArray.keySet()) {
            String value = sArray.get(key);
            if (value == null || value.equals("") || key.equalsIgnoreCase("sign")
                    || key.equalsIgnoreCase("sign_type")) {
                continue;
            }
            result.put(key, value);
        }

        return result;
    }

}

签名规则(config.php文件代码查看)

http://dev.polyv.net/2018/liveproduct/l-api/rule/sign/

以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

上传观看条件的白名单列表

接口URL

http://api.polyv.net/live/v3/channel/auth/upload-white-list

接口说明

1、接口用于设置频道或全局观看条件中的白名单列表
2、接口支持https

支持格式

JSON

请求方式

POST

请求数限制

TRUE

请求参数

参数名 必选 类型 说明
appId string 从API设置中获取,在直播系统登记的appId
timestamp long 13位当前时间戳
sign string 签名值
channelId int 频道号,无该参数为全局设置
rank int 主要观看条件为1,次要观看条件为2
file file 白名单模板文件

响应成功JSON示例:

{
    "code": 200,
    "status": "success",
    "message": "",
    "data": true
}

响应失败JSON示例:

未输入appId

{
    "code": 400,
    "status": "error",
    "message": "appId is required.",
    "data": ""
}

appId不正确

{
    "code": 400,
    "status": "error",
    "message": "application not found.",
    "data": ""
}

时间戳错误

{
    "code": 400,
    "status": "error",
    "message": "invalid timestamp.",
    "data": ""
}

签名错误

{
    "code": 403,
    "status": "error",
    "message": "invalid signature.",
    "data": ""
}

频道Id格式错误

{
    "code": 400,
    "status": "error",
    "message": "param is not digit: %s",
    "data": ""
}

频道不存在

{
    "code": 404,
    "status": "error",
    "message": "channel not found.",
    "data": ""
}

频道Id非法错误

{
    "code": 400,
    "status": "error",
    "message": "illegal channel id: %s",
    "data": ""
}

白名单表格记录解析错误

{
    "code": 400,
    "status": "error",
    "message": "whitelist excel parse error.",
    "data": ""
}

表格记录没有数据

{
    "code": 400,
    "status": "error",
    "message": "whitelist excel no data.",
    "data": ""
}

字段说明

参数名 说明
code 状态码,成功为200,签名失败为403,参数错误为400,服务端错误为500
status 成功为success,错误时为error
message 成功为"",错误时为错误描述信息
data 成功时为true,错误时为""

php请求示例

<?php
//引用config.php
include 'config.php';

$params = array(
  'appId' => $appId,
  'timestamp' => $timestamp,
  'rank' => 1,
  'channelId' => '204140'
);

//生成sign
$sign = getSign($params); //详细查看config.php文件的getSign方法

// 拼接需要签名的参数
$params["sign"] = $sign;
$url="http://api.polyv.net/live/v3/channel/auth/upload-white-list?".http_build_query($params);

function post($url, $post_data = '', $timeout = 5){


   $ch = curl_init();
   curl_setopt ($ch, CURLOPT_URL, $url);
   curl_setopt ($ch, CURLOPT_POST, 1);
   if($post_data != ''){
      curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
   }

   curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
   curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
   curl_setopt($ch, CURLOPT_HEADER, false);
   $file_contents = curl_exec($ch);
   curl_close($ch);
   return $file_contents;
}

// 文件不参与签名
$file['file'] = new CURLFile(realpath("test.xls"));
echo post($url, $file);
?>

签名规则(config.php文件代码查看)

http://dev.polyv.net/2018/liveproduct/l-api/rule/sign/

以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

设置授权认证URL

接口URL

http://api.polyv.net/live/v3/channel/restrict/update-auth-url

接口说明

1、接口用于设置频道和全局播放限制的授权认证URL,通过是否传channelId进行频道和全局区分
2、接口支持https

支持格式

JSON

请求方式

POST

请求数限制

TRUE

请求参数

参数名 必选 类型 说明
appId string 从API设置中获取,在直播系统登记的appId
timestamp long 13位当前时间戳
sign string 签名值
channelId int 频道号,无该参数为全局设置
url string 授权认证url,为空时清除设置

响应成功JSON示例:

{
    "code": 200,
    "status": "success",
    "message": "",
    "data": true
}

响应失败JSON示例:

未输入appId

{
    "code": 400,
    "status": "error",
    "message": "appId is required.",
    "data": ""
}

appId不正确

{
    "code": 400,
    "status": "error",
    "message": "application not found.",
    "data": ""
}

时间戳错误

{
    "code": 400,
    "status": "error",
    "message": "invalid timestamp.",
    "data": ""
}

签名错误

{
    "code": 403,
    "status": "error",
    "message": "invalid signature.",
    "data": ""
}

频道Id格式错误

{
    "code": 400,
    "status": "error",
    "message": "param is not digit: %s",
    "data": ""
}

频道不存在

{
    "code": 404,
    "status": "error",
    "message": "channel not found.",
    "data": ""
}

频道Id非法错误

{
    "code": 400,
    "status": "error",
    "message": "illegal channel id: %s",
    "data": ""
}

字段说明

参数名 说明
code 状态码,成功为200,签名失败为403,参数错误为400,服务端错误为500
status 成功为success,错误时为error
message 成功为"",错误时为错误描述信息
data 成功时为true,错误时为""

php请求示例

<?php
//引用config.php
include 'config.php';

$params = array(
  'appId' => $appId,
  'timestamp' => $timestamp,
  'channelId' => "填写频道号",
  'url' => "www.baidu.com"
);

//生成sign
$sign = getSign($params); //详细查看config.php文件的getSign方法


$url="http://api.polyv.net/live/v3/channel/restrict/update-auth-url";

function post($url, $post_data = '', $timeout = 5){
   $ch = curl_init();
   curl_setopt ($ch, CURLOPT_URL, $url);
   curl_setopt ($ch, CURLOPT_POST, 1);
   if($post_data != ''){
      curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
   }

   curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
   curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
   curl_setopt($ch, CURLOPT_HEADER, false);
   curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded'));
   $file_contents = curl_exec($ch);
   curl_close($ch);
   return $file_contents;
}

$params["sign"] = $sign;
echo post($url,http_build_query($params));
?>

签名规则(config.php文件代码查看)

http://dev.polyv.net/2018/liveproduct/l-api/rule/sign/

以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

查询直播频道观看条件

接口URL

http://api.polyv.net/live/v3/channel/auth/get

接口说明

1、接口用于获取频道观看条件
2、接口支持https

支持格式

JSON

请求方式

GET

请求数限制

TRUE

请求参数

参数名 必选 类型 说明
appId string 从API设置中获取,在直播系统登记的appId
timestamp string 当前13位毫秒级时间戳,3分钟内有效
sign string 签名,32位大写MD5值
channelId int 频道ID

响应成功JSON示例:

带频道ID的查询(频道生效观看条件)

#主要观看条件是无观看条件,次要观看条件是白名单观看条件
{
  "code": 200,
  "status": "success",
  "message": "",
  "data": [
    {
      "channelId": 102666,
      "rank": 1,   //主要观看条件
      "userId": "edvf2fpec9",
      "globalSettingEnabled": "N",
      "enabled": "N",
      "authType": "none"
    },
    {
      "channelId": 102666,
      "rank": 2,   //次要观看条件
      "userId": "edvf2fpec9",
      "globalSettingEnabled": "N",
      "enabled": "N",
      "authType": "phone",
      "authTips": "观看提示哦,大家请注意"
    }
  ]
}

#主要观看条件是验证码观看条件,次要观看条件是付费观看
{
  "code": 200,
  "status": "success",
  "message": "",
  "data": [
    {
      "channelId": 102666,
      "rank": 1,   //主要观看条件
      "userId": "edvf2fpec9",
      "globalSettingEnabled": "N",
      "enabled": "N",
      "authType": "code",
      "authCode": "2194",
      "qcodeTips": "请填写验证码",
      "qcodeImg": "http://www.polyv.net/code.png"
    },
    {
      "channelId": 102666,
      "rank": 2,   //次要观看条件
      "userId": "edvf2fpec9",
      "globalSettingEnabled": "N",
      "enabled": "N",
      "authType": "pay",
      "payAuthTips": "付费可看啦",
      "price": 0.10,
      "watchEndTime": null,
      "validTimePeriod": 100
    }
  ]
}

#主要观看条件是登记观看,次要观看条件是自定义授权观看
{
  "code": 200,
  "status": "success",
  "message": "",
  "data": [
    {
      "channelId": 102666,
      "rank": 1,   //主要观看条件
      "userId": "edvf2fpec9",
      "globalSettingEnabled": "N",
      "enabled": "N",
      "authType": "info"
    },
    {
      "channelId": 102666,
      "rank": 2,   //次要观看条件
      "userId": "edvf2fpec9",
      "globalSettingEnabled": "N",
      "enabled": "N",
      "authType": "custom",
      "customKey": "18c9a2e2a1",
      "customUri": "http://www.polyv.net/custom.htm"
    }
  ]
}

#主要观看条件是外部授权观看,次要观看条件是分享观看
{
  "code": 200,
  "status": "success",
  "message": "",
  "data": [
    {
      "channelId": 102666,
      "rank": 1,   //主要观看条件
      "userId": "edvf2fpec9",
      "globalSettingEnabled": "N",
      "enabled": "N",
      "authType": "external",
      "externalKey": "9828d6d5c7",
      "externalUri": "http://www.polyv.net/externalUri.htm",
      "externalRedirectUri": "http://www.polyv.net/externalRedirectUri.htm"
    },
    {
      "channelId": 102666,
      "rank": 2,   //次要观看条件
      "userId": "edvf2fpec9",
      "globalSettingEnabled": "N",
      "enabled": "N",
      "authType": "wxshare"
    }
  ]
}

不带频道ID的查询(全局观看条件)

{
  "code": 200,
  "status": "success",
  "message": "",
  "data": [
    {
      "userId": "edvf2fpec9",
      "rank": 1,
      "enabled": "N",
      "authType": "none",
      "authTips": "欢迎观看本直播",
      "payAuthTips": "欢迎观看本直播",
      "authCode": null,
      "qcodeTips": null,
      "qcodeImg": null,
      "price": 0.00,
      "watchEndTime": null,
      "validTimePeriod": null,
      "customKey": "a0088ec548",
      "customUri": null,
      "externalKey": "5ca1b8cc31",
      "externalUri": null,
      "externalRedirectUri": null
    },
    {
      "userId": "edvf2fpec9",
      "rank": 2,
      "enabled": "N",
      "authType": "none",
      "authTips": "欢迎观看本直播",
      "payAuthTips": "欢迎观看本直播",
      "authCode": null,
      "qcodeTips": null,
      "qcodeImg": null,
      "price": 0.00,
      "watchEndTime": null,
      "validTimePeriod": null,
      "customKey": "8ad66e747e",
      "customUri": null,
      "externalKey": "9c90190d44",
      "externalUri": null,
      "externalRedirectUri": null
    }
  ]
}

响应失败JSON示例:

未输入appId

{
    "code": 400,
    "status": "error",
    "message": "appId is required.",
    "data": ""
}

appId不正确

{
    "code": 400,
    "status": "error",
    "message": "application not found.",
    "data": ""
}

时间戳错误

{
    "code": 400,
    "status": "error",
    "message": "invalid timestamp.",
    "data": ""
}

签名错误

{
    "code": 403,
    "status": "error",
    "message": "invalid signature.",
    "data": ""
}

字段说明

参数名 说明
code 请求结果代码,成功为200 错误为400,签名错误为403,接口错误为500
status 请求结果,成功时为"success"错误时为"error"
message 错误信息,请求成功时为空串,错误时错误信息
data 请求成功为数据内容,错误为空串
channelId 频道ID
userId 用户ID
rank 用于实现一个频道设置两个观看条件,为1或2(1为主要条件,2为次要条件)
globalSettingEnabled 是否开启全局设置(Y/N)
enabled 是否开启观看条件(Y/N)
authType 观看条件类型(1. 无限制 none 2. 验证码观看 code 3. 付费观看 pay 4. 白名单观看 phone 5. 登记观看 info 6. 分享观看 wxshare 7. 自定义授权观看 custom 8. 外部授权观看 external)
authTips 白名单观看提示信息
payAuthTips 付费观看提示信息
authCode 验证码观看的验证码
qcodeTips 验证码观看的二维码提示
qcodeImg 验证码观看的二维码图片
price 付费观看的价格
watchEndTime 付费观看,截止时间,为null表示:一次付费,永久有效
validTimePeriod 付费观看的截止时长 (天)
customKey 自定义授权观看的key
customUri 自定义授权观看的接口地址
externalKey 外部授权观看的key
externalUri 外部授权观看的接口地址
externalRedirectUri 外部授权观看,用户直接访问观看页时的跳转地址

php请求示例

<?php
//引用config.php
include 'config.php';

$channelId="183950";

$params = array(
  'appId' => $appId,
  'channelId' => $channelId,
  'timestamp' => $timestamp
);

//生成sign
$sign = getSign($params); //详细查看config.php文件的getSign方法

$url = "http://api.polyv.net/live/v3/channel/auth/get?appId=".$appId."&channelId=".$channelId."&timestamp=".$timestamp."&sign=".$sign;

echo file_get_contents($url);

?>

签名规则(config.php文件代码查看)

http://dev.polyv.net/2018/liveproduct/l-api/rule/sign/

以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...