描述
第三方平台可通过此接口配置用户外部授权的相关配置,将用户是否允许观看某个直播的决策权交给第三方平台;
认证流程
流程说明
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 | 私有配置的课堂不存在 |