單一登入後台
更新時間:2022-03-17 10:03:42
描述
单点登录可以实现在登录已有系统的状态下,免登录操作进入保利威的账号、保利威的直播子账号、频道、子频道后台,做直播相关设置
適用場景
Polyv 後台單一登入分為:帳號、直播子帳號、頻道、子頻道四種。
帳號:進入帳號後台,取得最高的管理員權限,管理所有頻道、子頻道,適合機構管理員的登入跳轉
直播子帳號:進入帳號後台,根據後台設定的對應帳號角色權限,擁有不同操作後台功能權限,適合機構不同角色員工的登入跳轉
頻道:進入頻道後台,僅取得當前頻道的管理員權限,可管理當前頻道及頻道下的子頻道,適合講師的登入跳轉
子頻道:僅可進入助教頁面,協助講師在直播中管理聊天室、發起互動功能等,適合助教、助理的登入跳轉
溫馨提示
當前文件中涉及介面域名 https://live.polyv.net (舊版直播後台)或 https://console.polyv.net (新版直播後台) 為 Polyv 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 | 完成授權後重新導向地址,如Polyv 直播後台,使用 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();"/>
