描述

第三方平台可通过此接口配置用户外部授权的相关配置,将用户是否允许观看某个直播的决策权交给第三方平台;

认证流程

流程说明

1.开启设置

1)全局设置: 通过以下接口,设置type为global,针对所有的课程配置生效,如果针对单个课程再做配置,以单个课程配置为最终配置。

2)针对某个课程的配置方式:通过以下接口,设置type为private,并传入某个课程的课程id,和相关校验接口地址和跳转地址,是否使用全局配置的开关等参数,如果开关为打开状态,则用户观看此课程时,将通过设置的auth_url去校验用户是否允许观看。

3)接口参数:use_global_k ,默认为0不开启,1为开启,是否针对此课程开启全局外部授权配置;当设置为0后,则以单个课程的配置为最终配置。

2.Vhall接口URL中请务必带上third_party_params参数,值为urlencode后的json对象,如果这个参数为空或者没有这个参数或格式不对,则视为认证失败。

具体格式为以下

字段名称 说明
type 固定值为 third_k_auth 不可更改,便于区分业务类型
k 值为第三方自定义用户相关信息标识,可以理解为签名的意思,用来校验合法性

php代码举例:

$third_party_params=urlencode(json_encode([
"type"=>"third_k_auth",
"k"=>"5f6c68a02f6b7" //通过uniqid() 函数或其它自有逻辑,生成与第三方系统绑定的唯一标识,便于进行校验。
]));
//则最终$third_party_params=%7B%22type%22%3A%22third_k_auth%22%2C%22k%22%3A%225f6c68a02f6b7%22%7D

//访问微吼观看链接时具体的url格式示例为
//https://t-class.e.vhall.com/#/sClass/edu_d4c0e4ee?third_party_params=%7B%22type%22%3A%22third_k_auth%22%2C%22k%22%3A%225f6c68a02f6b7%22%7D

3.微吼课堂系统收到用户的接口访问请求后,会向第三方认证URL(auth_url)发送HTTP POST请求,将third_party_params参数值作为POST数据提交 给第三方认证。由第三方系统验证third_party_params值的合法性。如果认证通过,第三方认证URL(auth_url)返回无bom字符串pass,否则的返回fail

注:需要确保您的回调地址支持 multipart/form-data 方式接收 post 数据。

4.微吼课堂系统根据第三方认证URL返回值判断认证是否成功。只有收到{code:200},才能认定为验证成功,否则一律跳转到指定的认证失败 URL,或者提示'非法访问',返回结果必须为json 返回字段说明

字段 类型 说明
code int 状态码,只有当code等于200时,微吼课堂才认为验证通过
nick_name string 用户昵称,当code等于200 时,nick_name 必须有值,否则直播间内用户昵称将不显示

参数特征 URL请求很容易被探测截获,这就要求第三方系统生成的third_party_params对象中的k值字段必须有以下特征:

唯一性:每次调用接口必须产生不同的K值

时效性:设定一个时间范围,超时的K值即失效。

如果包含有第三方系统内部信息,必须加密和混淆过。

建议的third_party_params对象中k值字段的实现 第三方系统可以考虑K值元素包括:用户ID、微吼课堂课程ID、时间戳(1970-01-01至今的秒数)元素组合后加密后,使用Base64或者hex 匹配成URL可识别编码。k值在第三方系统中持久化或放在Cache中回调验证时,根据时间戳判断是否在设定时间内有效验证结束,若认证通过,则从DB或Cache中移除K值DB或Cache建议有时效性控制,自动失效或定期清理过期数据

接口地址

http://api-class.e.vhall.com/api/class/auth/third-party-auth-config

请求参数

公共参数需要每次请求都附带上,详细内容请参考公共参数

参数名 类型 必选 说明
child_id int 子账户id
exist_3rd_auth int 是否开启外部授权验证,1开启 0 不开启
auth_url string 外部授权验证接口url,最大255个字符
failure_url string 外部授权验证失败,跳转url,最大255个字符
type int 配置类型,global 为针对用户做全局配置,private 为针对课程做私有配置
class_id string 课程id,当type 为private 时 课程id 必须填写
use_global_k int 当为课程私有配置时,此项必须填写默认为1,1 代表课程使用全局配置,0代表课程使用课程自身配置

响应参数

返回形如''{"code":200,"msg":"success","data":''的json。

响应示例

{
  "code": 200,
  "msg": "success",
  "data": []
}

错误码

code 含义
20000 子账号不存在
10005 私有配置的课堂不存在