Docs
Resources
Tools
News
to top

用户管理

登陆与注销

本章小节:

发起登陆

start to login

图 1. 发起登陆过程

1

客户端调用 Mtc_CliLogin 发起注册请求,等待 SDK 注册回调通知更新注册状态。

  • iAccNetType 接入的网络类型值可以参考 EN_MTC_ACC_NET_TYPE 枚举类型,界面可以填写 EN_MTC_ACC_NET_UNKNOWN
  • pcAccNetIp 接入网络的IP地址,界面也可以填写 NULL

注意: 在调用 Mtc_CliLogin 进行注册之前,要确保下列步骤已经完成

  • 进行客户端的初始化(调用 Mtc_CliInit 接口)
  • 设置好必要的参数和回调(详情参见客户端管理章节中参数设置部分)
  • 打开一个账号,读取账号的配置信息(详情参见用户管理章节)
  • 启动客户端
2

SDK 发送 SIP REGISTER 请求。

3

服务器对 SIP REGISTER 请求发起鉴权挑战。

4

SDK 提取 SIP 401“WWW-Authenticate”头域中的“Digest realm”、“nonce”、“algorithm”计算鉴权结果,填写在注册报文的“Authorization”头域后重新发起注册。

5

服务器回 200 OK 响应表示注册成功。

6

SDK 通过 Mtc_CliCbSetServLoginOk 设置的回调通知界面注册成功。

表 1. 发起登陆过程说明

取消登陆

start to logout

图 2. 取消登陆过程

1

客户端调用 Mtc_CliLogin 发起注册请求,等待 SDK 注册回调通知更新注册状态。

  • iAccNetType 接入的网络类型值可以参考 EN_MTC_ACC_NET_TYPE 枚举类型,界面可以填写 EN_MTC_ACC_NET_UNKNOWN
  • pcAccNetIp 接入网络的 IP 地址,界面也可以填写NULL

注意: 在调用 Mtc_CliLogin 进行注册之前,先要确保下列的步骤已经完成

  • 进行客户端的初始化(调用 Mtc_CliInit 接口)
  • 设置好必要的参数和回调(详情参见客户端管理章节中参数设置部分)
  • 打开一个账号,读取账号的配置信息(详情参见用户管理章节)
  • 启动客户端
2

SDK 发送 SIP REGISTER 请求。

3

界面调用 Mtc_CliLogout 进行取消登录。

4

SDK 发送 REGISTER 其中 expire 值为 0

5

服务器回 200 OK 响应表示注销成功。

6

SDK 通过 Mtc_CliCbSetServLogout 设置的回调通知界面注销成功。

  • bActive ZTRUE 表示是用户发起的注销。
  • dwStatCode MTC_CLI_ERR_NO 表示非错误,是用户发起的注销
  • dwExpires 0 该参数目前可以忽略

表 2. 取消登陆过程说明

发起注销

start to logout

图 3. 发起注销过程

1

客户端调用 Mtc_CliLogout 发起注销请求,客户端进入“注销中”状态,等待 SDK 回调通知更新状态。

注意: 在调用 Mtc_CliLogout 之前客户端至少调用过 Mtc_CliLogin 进行过登录

2

SDK 发送注销请求,SIP REGISTER 报文携带 Expires = 0。

3

服务器对注销请求发起鉴权挑战。

4

SDK 取出 SIP 401“WWW-Authenticate”头域中的“Digest realm”、“nonce”、“algorithm”并计算鉴权结果,填写在注销报文的“Authorization”头域后发起注销。

5

服务器回 200 OK 响应表示注销成功。

6

SDK 通过 Mtc_CliCbSetServLogout 设置的回调通知界面注销成功。

  • bActive ZTRUE 表示是用户发起的注销。
  • dwStatCode MTC_CLI_ERR_NO 表示非错误,是用户发起的注销
  • dwExpires 0 该参数目前可以忽略

注意: Mtc_CliCbSetServLogout 回调中返回的参数这里详细介绍一下:

bActive:若为 ZTRUE 表示注销是用户主动发起的;若为 ZFALSE 表示注销不是用户发起的,是其它原因,比如是被网络测注销了,网络断了等等。具体 原因需要查看 dwStatCode进 行具体分析。

dwStatCode值如下

类型 说明 GUI 处理
MTC_CLI_ERR_NO 用户正常注销 回调中显示未登录状态
MTC_CLI_REG_ERR_AUTH_FAILED 授权错误,具体来说有下列两种原因,原因1:注册的时候服务器回了 403 FORBIDDEN 响应并提示授权失败;原因2:注册在进行鉴权时服务器一直回 401,进行 重复鉴权,并且超过了用户配置的次数 回调中显示未登录状态
MTC_CLI_REG_ERR_INVALID_USER 授权错误。用户不正确,服务器回了 403 并提示用户不正确或者返回了 404,413,416 响应 回调中显示未登录状态
MTC_CLI_REG_ERR_TIMEOUT 注册超时 回调中显示未登录状态
MTC_CLI_REG_ERR_SERV_BUSY 服务器正忙,服务器回了 486 响应 回调中显示未登录状态
MTC_CLI_REG_ERR_SERV_NOT_REACH 服务器不可达,服务器可能回了 480,482,483,484 响应 回调中显示未登录状态
MTC_CLI_REG_ERR_SRV_FORBIDDEN 注册被拒绝 回调中显示未登录状态
MTC_CLI_REG_ERR_SRV_UNAVAIL 服务不可用,注册时服务器返回了 503 响应,或者注册时服务器返回的 200 OK 中 expired 值为 0 回调中显示未登录状态
MTC_CLI_REG_ERR_DEACTED 当前账号被其它用户登录了 回调中显示当前账号被其它用户登录了
MTC_CLI_REG_ERR_PROBATION 被服务器注销了 回调中显示未登录状态
MTC_CLI_REG_ERR_OTHER 其它类型错误 回调中显示未登录状态
MTC_CLI_REG_ERR_NO_RESOURCE SDK 内部错误,一般原因是 SDK 内存资源不足 回调中显示未登录状态
MTC_CLI_REG_ERR_NETWORK 因为网络原因导致注册无法正常进行 回调中显示未登录状态
MTC_CLI_REG_ERR_SEND_MSG SDK内部错误,出现的情况是发送 SIP REGISTER 时未能正常发出 回调中显示未登录状态

表 3. 发起注销过程说明

被动注销

start to close all active sessions

图 4. 被动注销过程

1

SDK在登录成功后,若界面设置 Mtc_CliDbSetSubsReg 为 ZTRUE, SDK 会自动订阅注册事件,这样客户端被服务器侧注销时客户端才能进行感知。

2

服务器响应 200 OK。

3

客户端被服务器端注销了,服务器会下发通知给 SDK 进行处理

4

SDK 通过 Mtc_CliCbSetServLogout 设置的回调通知界面注销成功。

  • bActive ZFALSE 表示是注销操作非用户发起的
  • dwExpires 0 该参数目前可以忽略
  • dwStatCode 详细原因错误码详细如下
类型 说明 GUI 处理
MTC_CLI_REG_ERR_TIMEOUT 注册超时 回调中显示未登录状态
MTC_CLI_REG_ERR_SRV_FORBIDDEN 注册被拒绝 回调中显示未登录状态
MTC_CLI_REG_ERR_DEACTED 当前账号被其它用户登录了 回调中显示当前账号被其它用户登录了
MTC_CLI_REG_ERR_PROBATION 被服务器注销了 回调中显示未登录状态

5

界面根据不同的错误码进行对应的处理。

表 4. 被动注销过程说明

Juphoon © 2015 中文(简体)
关于我们 JusTalk 开发人员 招聘 隐私政策