文档首页 > > 客户端SDK参考> Android Native SDK> 登录与注销

登录与注销

分享
更新时间: 2019/08/01 14:13

用户登录

描述

在使用CloudEC解决方案下的各类业务之前,需要向服务器完成登录。不再使用业务时需注销,确保业务接口使用的安全性。

说明:

登录成功后,SDK自动按保活周期定时刷新鉴权凭证信息。

前提条件

已完成初始化。

业务流程

图1 登录处理流程
  1. UI调用TsdkLoginManager的login()方法进行登录,参数为TsdkLoginParam类。包括用户ID、鉴权类型、用户帐户和密码(或Tiket)以及服务器信息。
    说明:
    1. 用户ID,由应用程序生成的标识,用于关联用户帐户。
    2. 如果用户选择使用“密码鉴权”登录,则鉴权类型取值为TSDK_E_AUTH_TYPE,帐户的用户名和密码必需填写;如果用户选择使用第三方认证登录,则鉴权类型取值为TSDK_E_AUTH_TICKET,帐户的ticket值必须填写,取值为第三方提供的token值。
    3. 服务器类型取值TSDK_E_SERVER_TYPE,暂仅支持TSDK_E_SERVER_TYPE_PORTAL。
    代码示例:
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    //Java code
    TsdkLoginParam tsdkLoginParam = new TsdkLoginParam();
    tsdkLoginParam.setUserId(1);
    tsdkLoginParam.setAuthType(TsdkAuthType.TSDK_E_AUTH_NORMAL);
    tsdkLoginParam.setUserName(loginParam.getUserName());
    tsdkLoginParam.setPassword(loginParam.getPassword());
    tsdkLoginParam.setServerAddr(loginParam.getServerUrl());
    tsdkLoginParam.setServerPort(loginParam.getServerPort());
    tsdkLoginParam.setServerVersion("");
    tsdkLoginParam.setServerType(TSDK_E_SERVER_TYPE_PORTAL);
    tsdkLoginParam.setUserTicket("");
    
    ret = TsdkManager.getInstance().getLoginManager().login(tsdkLoginParam);
    
  2. SDK收到服务器的鉴权登录响应后,向UI上报鉴权成功事件onEvtAuthSuccess。
    说明:
    1. 如果鉴权失败,将不能进行下一步操作,也不会有业务帐号和配置信息上报。
    代码示例:
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    //Java code
    public void onEvtAuthSuccess(int userId, TsdkImLoginParam imLoginParam) {
        LogUtil.e(TAG, "authorize success.");
        // 启动IM的登录
        if (TsdkManager.getInstance().getAppInfo().getSupportIm() == 1 && null != imLoginParam) {
            ImAccountInfo imAccountInfo = new ImAccountInfo();
            imAccountInfo.setAccount(imLoginParam.getAccount());
            imAccountInfo.setToken(imLoginParam.getToken());
            String[] MaaUri = imLoginParam.getMaaServerUri().split(":");
            imAccountInfo.setMaaServer(MaaUri[0]);
            imAccountInfo.setMaaServerPort(Integer.valueOf(MaaUri[1]));
            imAccountInfo.setPassword(imLoginParam.getPassword());
            imAccountInfo.setPushServer(imLoginParam.getPushServerUri());
    
            sendHandlerMessage(LoginEvent.LOGIN_E_EVT_AUTH_SUCCESS.getIndex(), imAccountInfo);
        }
    }
    
  3. SDK收到服务器的鉴权登录响应后,向UI上报VOIP帐号信息事件onEvtVoipAccountStatus。
    说明:

    如果登录成功,会上报帐号短号号码,UI应保存此号码,以方便后续操作。

    代码示例:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    //Java code
    public void onEvtVoipAccountStatus(int userId, TsdkVoipAccountInfo voipAccountInfo ) {
        LogUtil.e(TAG, "voip account status: " );
    
        this.sipNumber = voipAccountInfo.getNumber();
        if (!voipAccountInfo.getTerminal().equals("")) {
            this.terminal = voipAccountInfo.getTerminal();
        }
    }
    
  4. 登录成功之后,SDK向UI上报登录成功事件onEvtLoginSuccess,UI做相应的界面处理。
    说明:

    有时候会出现鉴权成功,但是voip登录失败的情况。可修改初始化时的参数productName来解决。

    代码示例:
    1
    2
    3
    4
    5
    //Java code
    public void onEvtLoginSuccess(int userId) {
        LogUtil.i(TAG, "voip login success");
        this.loginEventNotifyUI.onLoginEventNotify(LoginConstant.LoginUIEvent.LOGIN_SUCCESS, userId, "voip login success");
    }
    

注意事项

无。

用户主动注销

描述

不再使用业务时需注销,确保业务接口使用的安全性。

前提条件

登录成功。

业务流程

图2 注销处理流程
  1. UI调用TsdkLoginManager的logout()方法发起注销。
    代码示例:
    1
    2
    3
    4
    5
    6
    7
    8
    //Java code
    public void logout() {
        int ret = TsdkManager.getInstance().getLoginManager().logout();
        if (ret != 0) {
            LogUtil.e(TAG, "login is failed, return " + ret);
        }
        ImMgr.getInstance().imLogout();
    }
    
  2. 登出成功之后,向UI上报登出成功事件onEvtLogoutSuccess。

注意事项

无。

服务器强制注销

描述

不再使用业务时需注销,确保业务接口使用的安全性。

前提条件

登录成功。

业务流程

图3 服务器强制注销处理流程
说明:

用户帐号在其他位置登录时,服务器会通知应用程序注销本地帐号。

  1. SDK收到服务器的强制登出通知消息后,向UI上报强制登出事件onEvtForceLogout。
  2. UI调用TsdkLoginManager的logout()方法完成登出过程。

注意事项

无。

断网重连

应用程序监测到断网重连,应根据预先配置的策略确定是否自动发起登录流程,若预配置,则发起登录流程,与普通的“登录”流程相同。

密码修改

描述

用户可以通过该接口修改自己的帐号的密码。

前提条件

登录成功。

业务流程

图4 修改密码处理流程
  1. UI调用TsdkLoginManager的modifyPassword()方法修改当前登录账号密码。
    代码示例:
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    //Java code
    public int modifyPwd(String newPwd, String oldPwd) {
        TsdkModifyPasswordParam modifyPasswordParam = new TsdkModifyPasswordParam(newPwd, oldPwd);
        int ret = TsdkManager.getInstance().getLoginManager().modifyPassword(modifyPasswordParam);
        if (ret != 0) {
            LogUtil.e(TAG, "modifyPwd is failed, return " + ret);
        }
    
        return ret;
    }
    
  2. SDK在收到服务器返回的密码修改结果响应后,通过TsdkNotify对象中的onEvtModifyPasswordResult()方法向UI上报密码修改结果。

    代码示例:

    //Java code
    @Override
    public void onEvtModifyPasswordResult(int userId, final TsdkCommonResult result) {
    	Log.i(TAG, "onEvtModifyPasswordResult notify.");
    	LoginMgr.getInstance().handModifyPasswordResult(result);
    }
分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

跳转到云社区