单点登录后台
更新时间:2022-03-17 10:03:42
描述
单点登录可以实现在登录已有系统的状态下,免登录操作进入保利威的账号、保利威的直播子账号、频道、子频道后台,做直播相关设置
适用场景
保利威后台单点登录分:账号、直播子账号、频道、子频道四种。
账号:进入账号后台,获取最高的管理员权限,管理所有频道、子频道,适合机构管理员的登录跳转
直播子账号:进入账号后台,根据后台配置的对应账号角色权限,拥有不同操作后台功能权限,适合机构不同角色员工的登录跳转
频道:进入频道后台,仅获取当前频道的管理员权限,可管理当前频道及频道下的子频道,适合讲师的登录跳转
子频道:仅可进入助教页面,协助讲师在直播中管理聊天室、发起互动功能等,适合助教、助理的登录跳转
温馨提示
当前文档中涉及接口域名 https://live.polyv.net (旧版直播后台)或 https://console.polyv.net (新版直播后台) 为保利威saas的默认域名,如客户做了cname定制,需修改为cname的对应域名进行调用;避免影响单点登录功能的使用。
如何操作
1.操作流程

2.调用接口说明
| 操作类型 | 设置token接口(点击可查看详细接口调用) | 单点登录后台接口 |
|---|---|---|
| 账号 | https://api.polyv.net/live/v3/user/set-sso-token | https://{后台域名}/v2/sso/userLogin.do |
| 直播子账号 | https://api.polyv.net/live/v3/user/set-sso-token | https://{后台域名}/v2/sso/userLogin.do |
| 频道 | https://api.polyv.net/live/v2/channels/{channelId}/set-token | https://{后台域名}/teacher/auth-login |
| 子频道 | https://api.polyv.net/live/v2/channels/{accountId}/set-account-token | https://{后台域名}/teacher/auth-login |
注:上述表格中{后台域名}指的是当前使用的后台域名(如果当前使用直播旧版后台域名,则域名为live.polyv.net;如果当前使用直播新版后台,则域名为console.polyv.net; 如果客户做了cname定制,需修改为cname的对应域名进行调用)。
3.操作步骤
Step1.设置单点登录token参数
接口URL
1.根据操作类型(账号、频道、子频道)选择对应的设置token接口URL
账号:https://api.polyv.net/live/v3/user/set-sso-token
直播子账号:https://api.polyv.net/live/v3/user/set-sso-token
频道:https://api.polyv.net/live/v2/channels/{channelId}/set-token
子频道:https://api.polyv.net/live/v2/channels/{accountId}/set-account-token
2.接口说明
支持格式:JSON
请求方式:POST
请求数限制:TRUE
接口URL中的{channelId}为频道号
token 参数请勿过于简单,建议使用16位随机字符串
支持https协议
请求参数
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| appId | true | String | 从API设置中获取,在直播系统登记的appId |
| timestamp | true | String | 当前13位毫秒级时间戳,3分钟内有效 |
| token | true | String | 唯一的字符串 |
| sign | true | String | 签名,为32位大写的MD5值 |
| childEmail | false | String | 直播子账号的邮箱账号(调用子账号单点登录时才需要提交该参数) |
响应成功JSON示例
{
"code": 200,
"status": "success",
"message": "",
"data": "success"
}
响应失败JSON示例
未输入appId
{
"code": 400,
"status": "error",
"message": "appId is required.",
"data": ""
}
接口返回字段说明
| 参数名 | 说明 |
|---|---|
| code | 请求状态响应码 |
| status | 请求状态 |
| message | 错误信息 |
| data | 成功时候返回success字符串 |
Step2.成功设置token接口后,调用单点登录后台接口进行授权登录操作。
接口URL
1.根据操作类型(账号、频道、子频道)选择对应的单点登录后台接口URL
账号:https://live.polyv.net/v2/sso/userLogin.do
直播子账号:https://live.polyv.net/v2/sso/userLogin.do
频道:https://live.polyv.net/teacher/auth-login
子频道:https://live.polyv.net/teacher/auth-login
2.接口说明
支持格式:JSON
请求方式:GET
请求数限制:TRUE
用于获取token后授权登录直播后台
支持https协议
操作类型为账号的请求参数
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| userId | true | String | 账号id |
| token | true | String | 通过账号token设置的token串,10秒内且一次验证有效 |
| redirect | true | String | 完成授权后重定向地址,如保利威直播后台,使用url编码 |
| childEmail | false | String | 直播子账号的邮箱账号(调用子账号单点登录时才需要提交该参数) |
操作类型为频道/子频道的请求参数
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| channelId | true | String | 频道号或子频道号 |
| token | true | String | 通过频道token 或子频道token设置的token串,10秒内且一次验证有效 |
| redirect | true | String | 完成授权后重定向地址,使用url编码,如导播台或统计分析 或 网页开播:https://live.polyv.net/web-start/?channelId={频道号} 或 助教页:https://live.polyv.net/assistant.html 注意:若做了cname需将live.polyv.net换成cname域名 |
响应成功示例
1.账号/直播子账号
验证成功则会重定向到相应的网页,否则返回错误
2.频道/子频道
验证成功则会重定向到相应的网页,否则默认重定向到相应的后台,验证失败则会重定向到频道登录页
请求示例
<?php
function settoken(){
//接口需要的参数
// 注意点:需替换的参数有:$appId、$appSecret、$channelId、$token(token是我们自己设置的)
$appId = "";
$appSecret = "";
$token = "2222222";
$timestamp=time()*1000;
$userId="";
$channelId="";
$nickname="王老师";
$childEmail="xxx@polyv.net"
$params = array(
'appId'=>$appId,
'childEmail'=>$childEmail, // 子账号单点登录才需要该参数
'token'=>$token,
'timestamp'=>$timestamp
);
//计算sign
foreach ($params as $key=>$value){
$arr[$key] = $key;
}
sort($arr);
$str = $appSecret;
foreach ($arr as $k => $v) {
$str = $str.$arr[$k].$params[$v];
}
$restr = $str.$appSecret;
$sign = strtoupper(md5($restr));
//根据操作类型(账号、直播子账号、频道、子频道)设置对应的后台单点登录接口及定向地址。
$redirect = urlencode("https://live.polyv.net/#/teacher/$channelId/chatReview/");
$callbackUrl="https://live.polyv.net/teacher/auth-login?channelId=$channelId&token=$token&redirect=$redirect";
//根据操作类型(账号、直播子账号、频道、子频道)设置单点登录的token
$url="{设置token接口URL}?appId=$appId×tamp=$timestamp&token=$token&sign=$sign&nickname=";
//输出接口请求结果
$result=json_decode(file_get_contents($url),true);
if($result["code"] == 200){
echo "location.href='" . $callbackUrl . "'";
}
}
?>
<script language="JavaScript">
function bt_click(){
<?php
settoken();
?>
}
</script>
<input type="button" name="show" id="show" value="提交" onClick="bt_click();"/>
