2.登录认证

客户端调用流媒体服务器接口,首先要做的是身份认证,认证通过后才可以调用流媒体服务器的接口。
服务器和客户端通过“挑战->应答”方式(challenge-response)进行身份认证交互,在这个过程中,客户端需要调用两次接口向服务器证明身份。认证过程中不需要传递密码,密码用于签名验证。
身份认证的过如下:
1)客户端使用“用户名”作为参数调用“login1”接口,向服务器发出身份认证请求
1.1)服务器确认用户是否是有效的用户:
1.2)若不是,则不做进一步处理,返回错误信息
1.3)若是,服务器产生一个“随机数(挑战字符串)”发送给客户端
2)客户端使用“用户密码”和“随机数(挑战字符串)”作为输入,按约定的算法生成一个hash值,用该hash值作为 调用“login2”接口的参数,请求login2接口。
2.1)服务器用收到的hash值与自己的计算结果比较,若二者相同,则通过认证;否则,认证失败
2.2)若认证通过,服务器返回“token”给客户端,否者返回错误信息。

2.1.login1接口

  • 用途
    客户端向服务器申请进行身份认证,服务器返回“挑战字符串”给客户端。
  • 请求
    session/login1?phone=13888888888

    phone 【必选】 使用注册的手机号作为登录服务器的用户识别信息。

  • 响应
    {
    "code": 0,
    "data": {
        "count": 1,
        "items": [
                     {
                    "phone": "13888888888",
                    "chcode": "uts1m4"
                    }
                ]
    }
    }

    code 等于0,表示用户有效,items段返回挑战数据:
    phone 登录用的手机号,下一步需要原样带入;
    chcode 挑战字符串。
    code 不等于0,其他值表示错误,此时 err_desc 的内容是错误描述。

2.2.login2接口

  • 用途
    对login1接口返回“挑战字符串”进行hash运算,将运算结果提交给服务器,进行身份合法性认证。
  • 请求
    session/login2?phone=13888888888&hash=c869b2aab17c4c8e33f046e168ba4fd5

phone 【必选】 手机号码。
hash【必选】 是使用用户密码和挑战字符串作为输入计算出的md5摘要值(hash),算法如下:

hash=md5(md5(password)+challenge_code)

算法描述:首先计算出密码的hash值,然后在生成的密码hash值尾部拼接上挑战字符串形成新的字符串,最后计算这个新字符串的hash值。
hash算法采用md5算法,生成的摘要采用16进制编码,编码生成的字符采用小写字母。
例如,字符串111111的hash值是 96e79218965eb72c92a549dd5a330112

  • 响应
    code >0 其他值表示错误,此时 err_desc 的内容是错误描述。
    code 0 表示登录成功,在data数据段返回token和用户信息。
{
    "code": 0,
    "data": {
        "count": 1,
        "items": [
            {
                "id": "5",
                "name": "王小虎",
                "email": "[email protected]",
                "phone": "13888888888",
                "role": 1,
                "icon": "xxxx",
                "token": "6df901hvwqj4rqsj"
            }
        ]
    }
}

返回内容包括用户信息和一个token属性。
id
name
phone
email
icon 头像
role 角色,定义参见用户查询接口

token 验证字符串,用于后续接口的调用。
cache 用户信息的存储方式,如果是mem,则后续的接口调用中无需传递token参数,否者需要传递token参数。

2.3.微信登录接口

  • 用途
    对login1接口返回“挑战字符串”进行hash运算,将运算结果提交给服务器,进行身份合法性认证。
  • 请求
    session/wxLogin
  • 参数

outer_id=abcdex&name=微信用户&icon=http://.../myicon.png&sex=2

outer_id 【必选】 微信系统中的用户编号
name 【必选】 微信系统中的用户昵称
icon 【必选】 微信系统中的用户头像
sex 【必选】 微信系统中的用户性别 1=男士,2=女士

  • 响应
    code >0 其他值表示错误,此时 err_desc 的内容是错误描述。
    code 0 表示登录成功,在data数据段返回token和用户信息。
{
    "code": 0,
    "data": {
        "count": 1,
        "items": [
            {
                "id": "5",
                "name": "王小虎",
                "email": "[email protected]",
                "phone": "13888888888",
                "role": 1,
                "icon": "xxxx",
                "token": "6df901hvwqj4rqsj"
            }
        ]
    }
}

返回内容包括用户信息和一个token属性。
id
name
phone
email
icon 头像
role 角色,定义参见用户查询接口

token 验证字符串,用于后续接口的调用。


2.4.logout接口

  • 用途
    退出登录,服务器销毁用户登录信息,作废“token”。
    建议客户端在退出系统时总是调用该接口。
  • 请求
    session/logout

  • 响应
    {
    "code":0,
    }

2.5.修改密码

  • 用途
    对login1接口返回“挑战字符串”进行hash运算,将运算结果提交给服务器,进行身份合法性认证。
  • 请求
    session/changePwd
  • 参数
    old 旧密码
    new 新密码

  • 响应
    {
    "code":0,
    }