# 登录
本章节将介绍如何初始化 HarmonyOS Next SDK 并登录。
# 初始化
在主线程调用 JCClient.create (opens new window),创建 JCClient (opens new window) 实例对象。传入获取到的 appKey ,即可初始化 JCClient (opens new window)。
export class JCManager implements JCClientCallback {
// JCClient 对象
public client: JCClient | undefined;
// 初始化函数
initialize(context: Context, createParam: CreateParam): boolean {
this.mContext = context
// 登录类想
this.client =
JCClient.create(context, "用户 appKey", this, createParam);
// 获取初始化状态(用来判断初始化状态)
return this.client.getState() == ClientState.STATE_IDLE
}
// 所有登录接口回调的实现
...
}
初始化成功后,JCClient.ClientState (opens new window) 状态从 ClientState.STATE_NOT_INIT (opens new window)(未初始化) 变为 ClientState.STATE_IDLE (opens new window)(未登录)。
# 发起登录
SDK 初始化之后,即可进行登录的集成。登录接口调用流程如下所示:
先创建 LoginParam (opens new window) 实例以调整登录参数。后调用 login (opens new window),发起登录: let mLoginParam = new LoginParam(); let logined = this.client?.login("userID", "password", this.mLoginParam);
- userID 用户名不能为空,可由英文、数字和 + 、 - 、 _ 、 . 组成(特殊字符不能作为第一个字符),大小写不敏感,长度不能超过 64 个字符。
- password 密码,不能为空,长度不能超过 128 字符。
- 调用该接口返回 true 时只代表调用接口成功,并不代表登录成功。登录的结果会通过 onLogin (opens new window) 回调上报。
调用接口成功后,首先会触发登录状态改变回调 onClientStateChange (opens new window)。您可以通过重写 onClientStateChange (opens new window) 执行逻辑操作。
onClientStateChange(state: number, oldState: number): void {
if (state == ClientState.STATE_IDLE) { // 未登录...
}
else if (state == ClientState.STATE_LOGINING) { // 正在登录...
}
else if (state == ClientState.STATE_LOGINED) { // 登录成功...
}
else if (state == ClientState.STATE_LOGOUTING) { // 登出中...
}
}
之后触发 onLogin (opens new window) 回调。您可以通过重写 onLogin (opens new window) 执行逻辑操作。
onLogin(result: boolean, reason: number): void {
if (result) {// 登录成功
...
}
if (reason == ClientReason.REASON_AUTH) {// 账号密码错误
...
}
}
登录成功之后,SDK 会自动保持与服务器的连接状态,直到用户主动调用登出接口,或者因为帐号在其他设备登录导致该设备登出。登录成功/失败原因 参考 ClientReason (opens new window)。
# 登出
登出接口调用流程如下所示:
调用 logout 可以发起登出。
onLogout(reason: number): void {
if (reason == ClientReason.REASON_SERVER_LOGOUT) {// 强制登出...
}
}
更多登出原因参考: ClientReason (opens new window)。