外部授权

一、功能路径

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

二、功能介绍

打开直播观看页的时候URL需带上指定的参数,经过直播系统验证请求合法后,直播系统会调用客户在后台设置的自定义授权验证接口,进行外部授权验证,两次验证通过,才能进入直播观看页,并且接口返回的观众账号具有唯一性,即同一个账号不能在两个地方同时登录,较早登录的账号会被踢出。
externalAuth1

  1. Secretkey:用于校验签名的生成。
  2. 自定义URL:用于外部授权验证的API接口。
  3. 跳转地址:观众直接访问Polyv观看页,会跳转到该地址;若跳转地址为空,则显示默认提示页。

三、外部授权流程详解

  1. 在自定义URL处填写用户的授权验证API接口,需要完整的不带参数的url地址(不能是localhost等本地服务器地址,且不能带 ? 号),如:http://myWebsite.com/auth。
  2. 在请求保利威视直播观看页时需带上userid(用户ID)、ts(当前时间的毫秒级时间戳)和sign(用于校验的签名,生成规则是secretkey + userid + secretkey + ts进行MD5加密),如https://live.polyv.cn/watch/125527?userid=6b3a43&ts=1498547407000&sign=dd9dc9e42ad7c0204398e925a4ee0f46
  3. 直播系统会对字符串secretkey+userid+secretkey+ts进行MD5加密后与用户提交的sign参数的值做比较判断是否合法。一次成功请求后,该链接将失效(sign只能成功使用一次)。如果合法,直播系统将调用用户的api接口,并把userid(用户ID)、ts(当前时间的毫秒级时间戳)和token(用于校验的签名)三个参数传给用户。如果不合法,则给出错误提示。
  4. 用户API接口获取userid、ts和token参数后,进行外部授权验证。如果验证通过,则将status(返回状态)、userid(学员唯一标识)、nickname(学员昵称)、avatar(学员头像)、actor(用户头衔名称,非必须)、actorFColor(用户头衔字体颜色,非必须,请使用CSS Hex值带#号)、actorBgColor(用户头衔背景颜色,非必须,请使用CSS Hex值带#号)等参数以json格式返回给直播系统。如果验证不通过,则将status(返回状态)、errorUrl(用户自定义错误页面)等参数返回给直播系统。
  5. 直播系统接收用户API接口返回的数据,如果验证成功,则进入到保利威视直播观看页,聊天区将显示学员的昵称和头像。如果验证失败,则给出错误提示。

流程图如下

外部授权流程图

四、参数说明

外部授权参数

五、代码示例(PHP)

<?php
header("Content-type:application/json;charset=UTF-8"); //媒体格式类型为JSON数据格式
$secretkey = "aDrOt0Cpy8";
$userid    = isset($_GET["userid"]) ? $_GET["userid"] : "";
$ts        = isset($_GET["ts"]) ? $_GET["ts"] : "";
$token     = isset($_GET["token"]) ? $_GET["token"] : "";
$sign      = md5($secretkey . $userid . $secretkey . $ts);

//用户进行授权验证,返回对应的数据(json格式)
if ($sign == $token) {
    //验证正确
    $array1 = array(
        "status"   => 1, //返回状态
        "userid"   => $userid, //学员唯一标识
        "nickname" => "保利威视", //学员昵称
        "avatar"   => "http://live.polyv.net/assets/images/avatars/9avatar.jpg", //学员头像
        "actor"   => "VIP",  // 学员头衔,可以不传递
        "actorFColor"   => "#5C96E5",  // 学员头衔字体颜色,可以不传递
        "actorBgColor"   => "#FFFFFF"   // 学员头衔背景颜色,可以不传递
    );
    $json1 = json_encode($array1);
    echo $json1;
} else {
    //验证错误
    $array0 = array(
        "status"   => 0,
        "errorUrl" => "http://xxx.xx.xxxx/error.html", //验证错误跳转的自定义页面
    );
    $json0 = json_encode($array0);
    echo $json0;
}

六、展示效果

http://demo.polyv.net/chenwb/open.php

七、注意事项

  1. .要保证自定义验证接口返回的userid的唯一性,当多个观众使用同一个userid进入观看页时,较早登录的观众会被后面登录的观众踢出,观看页会提示 "帐号在另外的地方登录,您将被退出观看。"如下图:
    被踢

  2. 自定义验证接口需要填写完整的URL地址,且不能是localhost等本地服务器地址。

  3. 自定义验证接口返回给直播系统的数据格式是json格式。

八、错误提示

  1. user not found:请求自定义验证接口错误,或者接口返回的格式不对。
  2. invalid sign:签名错误,sign的生成规则是secretkey+userid+secretkey+ts进行MD5加密。
  3. sign expired:签名过期,每一个sign只能使用一次,使用后需重新生成。
以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...