跳到主要内容

账号功能

更新时间:2025-03-22 13:54:05

账号和用户SDK提供了账号能力,包括注册、登录、登出等功能。开发可先阅读用户账号开发指南

内置账号体系

内置账号为RTCX平台提供的账号能力,包括验证码登录、自动登录、退出登录、发送验证码、重置密码。您在客户端集成后即可使用。

object OpenAccount{
/**
* 内置帐号注册
*
* @param userRegisterReq [UserRegisterReq]
* @param iotCallback
*/
fun register(userRegisterReq: UserRegisterReq, iotCallback: IoTCallback)

/**
* 发送验证码
*
* @param sendCodeReq [SendCodeReq]
* @param iotCallback
*/
fun sendCode(sendCodeReq: SendCodeReq, iotCallback: IoTCallback)

/**
* 内置帐号登录
*
* @param userLoginReq
* @param iotCallback
*/
fun login(userLoginReq: UserLoginReq, iotCallback: IoTCallback)

/**
* 用户注销登录
*
*/
fun logout()

/**
* 检查用户是否已经登录
*
* @return [Boolean] true: 已登录
*/
fun checkUserLogin()

/**
* 用户重置密码
*
* @param userResetPwdReq [UserModifyPwdReq]
* @param iotCallback [UserResetPwdRsp]
*/
fun resetPassword(userResetPwdReq: UserResetPwdReq, iotCallback: IoTCallback)

/**
* 设置登录失效监听
*
* @param callback
*/
fun setTokenInvalidCallback(callback: IoTTokenInvalidCallback)

/**
* 用户登录后使用旧密码修改新密码
*
* @param userModifyPwdReq [UserModifyPwdReq]
* @param iotCallback [UserCommonRsp]
*/
fun modifyPassword(userModifyPwdReq: UserModifyPwdReq, iotCallback: IoTCallback)

/**
* 注销用户
*
* @param verifyCode 验证码
* @param iotCallback [UserCommonRsp]
*/
fun userDelete(verifyCode:String, iotCallback: IoTCallback)
}

发送验证码

import com.polaris.iot.appsdk.libaccount.model.SendCodeReq;
import com.polaris.iot.appsdk.libcommon.constants.IoTSDKError;
import com.polaris.iot.appsdk.libapiclient.request.IoTRequest;
import com.polaris.iot.appsdk.libaccount.enums.VerifyCodeType;
import com.polaris.iot.appsdk.libaccount.OpenAccount;

OpenAccount.sendCode(new SendCodeReq(
account, VerifyCodeType.LOGIN.getType()
), new IoTCallback() {
@Override
public void onFailure(@Nullable IoTRequest request, @NonNull IoTSDKError exception) {
Toast.makeText(MainActivity.this, "发送验证码失败:" + exception.getMessage(), Toast.LENGTH_SHORT).show();
}

@Override
public void onResponse(@NonNull IoTRequest request, @NonNull IoTResponse response) {
Toast.makeText(MainActivity.this, "发送验证码成功", Toast.LENGTH_SHORT).show();
}
});

用户注册

import com.polaris.iot.appsdk.libaccount.model.UserLoginReq;
import com.polaris.iot.appsdk.libaccount.enums.AccountType;
import com.polaris.iot.appsdk.libaccount.enums.PasswordType;
import com.polaris.iot.appsdk.libcommon.constants.IoTSDKError;
import com.polaris.iot.appsdk.libapiclient.request.IoTRequest;
import com.polaris.iot.appsdk.libaccount.enums.VerifyCodeType;
import com.polaris.iot.appsdk.libaccount.OpenAccount;
import com.polaris.iot.appsdk.libcommon.utils.EncryptUtils.getMD5String

String account = "";
OpenAccount.sendCode(new SendCodeReq(
account, VerifyCodeType.REGISTER.getType()
), new IoTCallback() {
@Override
public void onFailure(@Nullable IoTRequest request, @NonNull IoTSDKError exception) {
Toast.makeText(MainActivity.this, "发送验证码失败:" + exception.getMessage(), Toast.LENGTH_SHORT).show();
}

@Override
public void onResponse(@NonNull IoTRequest request, @NonNull IoTResponse response) {
Toast.makeText(MainActivity.this, "发送验证码成功", Toast.LENGTH_SHORT).show();
}
});
String accountType = account.contains("@") ? AccountType.EMAIL.getType() : AccountType.MOBILE.getType())
String passwordType = account.contains("@") ? PasswordType.EMAIL_CODE.getType() : PasswordType.MOBILE_CODE.getType())
String password = "";
String verifiCode = "";
OpenAccount.register(
UserRegisterReq(
accountType, account, passwordType, getMD5String(password), verifyCode, null, null
), object : IoTCallback {
override fun onFailure(request: IoTRequest?, exception: IoTSDKError) {
mViewModel.enableRegisterBtn.set(true)
showToast(getString(R.string.tip_login_failed) + ":" + exception.message)
}

override fun onResponse(request: IoTRequest, response: IoTResponse) {
mViewModel.enableRegisterBtn.set(true)
//记录注册帐号
SharedPreferenceAppUtil.putString(Constants.SP_LOGIN_ACCOUNT_KEY, account)
finish()
}
})

用户登录

验证码登录

import com.polaris.iot.appsdk.libaccount.model.UserLoginReq;
import com.polaris.iot.appsdk.libaccount.enums.AccountType;
import com.polaris.iot.appsdk.libaccount.enums.PasswordType;
import com.polaris.iot.appsdk.libcommon.constants.IoTSDKError;
import com.polaris.iot.appsdk.libapiclient.request.IoTRequest;
import com.polaris.iot.appsdk.libaccount.enums.VerifyCodeType;
import com.polaris.iot.appsdk.libaccount.OpenAccount;

OpenAccount.sendCode(new SendCodeReq(
account, VerifyCodeType.LOGIN.getType()
), new IoTCallback() {
@Override
public void onFailure(@Nullable IoTRequest request, @NonNull IoTSDKError exception) {
Toast.makeText(MainActivity.this, "发送验证码失败:" + exception.getMessage(), Toast.LENGTH_SHORT).show();
}

@Override
public void onResponse(@NonNull IoTRequest request, @NonNull IoTResponse response) {
Toast.makeText(MainActivity.this, "发送验证码成功", Toast.LENGTH_SHORT).show();
}
});
String account = "";
String accountType = account.contains("@") ? AccountType.EMAIL.getType() : AccountType.MOBILE.getType())
String passwordType =account.contains("@") ? PasswordType.EMAIL_CODE.getType() : PasswordType.MOBILE_CODE.getType())
String verifiCode = "";
OpenAccount.login(new UserLoginReq(
accountType, account, passwordType, verifiCode, null, null
), new IoTCallback() {
@Override
public void onFailure(@Nullable IoTRequest request, @NonNull IoTSDKError exception) {
Toast.makeText(MainActivity.this, "登录失败:" + exception.getMessage(), Toast.LENGTH_SHORT).show();
}

@Override
public void onResponse(@NonNull IoTRequest request, @NonNull IoTResponse response) {
onLoginSuccess();
}
});

密码登录

import com.polaris.iot.appsdk.libaccount.model.UserLoginReq;
import com.polaris.iot.appsdk.libaccount.enums.AccountType;
import com.polaris.iot.appsdk.libaccount.enums.PasswordType;
import com.polaris.iot.appsdk.libcommon.constants.IoTSDKError;
import com.polaris.iot.appsdk.libapiclient.request.IoTRequest;
import com.polaris.iot.appsdk.libaccount.enums.VerifyCodeType;
import com.polaris.iot.appsdk.libaccount.OpenAccount;
import com.polaris.iot.appsdk.libcommon.utils.EncryptUtils.getMD5String


String account = "";
String accountType = account.contains("@") ? AccountType.EMAIL.getType() : AccountType.MOBILE.getType())
String passwordType =PasswordType.PASSWORD.getType();
String password = "";
OpenAccount.login(new UserLoginReq(
AccountType.MOBILE.getType(), account, passwordType, getMD5String(password), null, null
), new IoTCallback() {
@Override
public void onFailure(@Nullable IoTRequest request, @NonNull IoTSDKError exception) {
Toast.makeText(MainActivity.this, "登录失败:" + exception.getMessage(), Toast.LENGTH_SHORT).show();
}

@Override
public void onResponse(@NonNull IoTRequest request, @NonNull IoTResponse response) {
onLoginSuccess();
}
});

退出登录

import com.polaris.iot.appsdk.libaccount.OpenAccount;

OpenAccount.logout();

自动登录

import com.polaris.iot.appsdk.libaccount.OpenAccount;

boolean loginResult = OpenAccount.checkUserLogin();

重置密码

import com.polaris.iot.appsdk.libaccount.OpenAccount;
import com.polaris.iot.appsdk.libcommon.utils.EncryptUtils.getMD5String

OpenAccount.sendCode(new SendCodeReq(
account, VerifyCodeType.RESET_PWD.getType()
), new IoTCallback() {
@Override
public void onFailure(@Nullable IoTRequest request, @NonNull IoTSDKError exception) {
Toast.makeText(MainActivity.this, "发送验证码失败:" + exception.getMessage(), Toast.LENGTH_SHORT).show();
}

@Override
public void onResponse(@NonNull IoTRequest request, @NonNull IoTResponse response) {
Toast.makeText(MainActivity.this, "发送验证码成功", Toast.LENGTH_SHORT).show();
}
});

OpenAccount.resetPassword(new UserResetPwdReq(
account, getMD5String(password), verifyCode
), new IoTCallback() {
@Override
public void onFailure(@Nullable IoTRequest request, @NonNull IoTSDKError exception) {
showToast("重置失败:" + exception.getMessage());
}

@Override
public void onResponse(@NonNull IoTRequest request, @NonNull IoTResponse response) {
UserResetPwdRsp userResetPwdRsp = (UserResetPwdRsp) response.getData();
assert userResetPwdRsp != null;
if (!userResetPwdRsp.getRetBool()) {
onFailure(request, new IoTSDKError(-1, ""));
return;
}
showToast("重置成功,请前往登录界面使用密码登录");
}
});

登录失效监听

import com.polaris.iot.appsdk.libaccount.OpenAccount;
import com.polaris.iot.appsdk.libapiclient.callback.IoTTokenInvalidCallback;

OpenAccount.setTokenInvalidCallback(new IoTTokenInvalidCallback() {
@Override
public void onTokenInvalid(@Nullable IoTSDKError error) {
Toast.makeText(getApplicationContext(), "登录失效,请重新登录", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
});

修改密码

import com.polaris.iot.appsdk.libaccount.OpenAccount;
import com.polaris.iot.appsdk.libcommon.utils.EncryptUtils.getMD5String

OpenAccount.modifyPassword(
UserModifyPwdReq(
getMD5String(oldPassword), getMD5String(password)
), object : IoTCallback {
override fun onFailure(request: IoTRequest?, exception: IoTSDKError) {
showToast(getString(R.string.label_failed) + ":" + exception.message)
}

override fun onResponse(request: IoTRequest, response: IoTResponse) {
destroyLoginInvalidateReceiver()
showAlert(getString(R.string.label_success), object : ModalDialog.OnClickListener {
override fun onClick(dialog: ModalDialog, btn: Button): Boolean {
doLogout()
return true
}
})

}
})

注销用户

import com.polaris.iot.appsdk.libaccount.OpenAccount;

OpenAccount.sendCode(new SendCodeReq(
account, VerifyCodeType.UNREGISTER.getType()
), new IoTCallback() {
@Override
public void onFailure(@Nullable IoTRequest request, @NonNull IoTSDKError exception) {
Toast.makeText(MainActivity.this, "发送验证码失败:" + exception.getMessage(), Toast.LENGTH_SHORT).show();
}

@Override
public void onResponse(@NonNull IoTRequest request, @NonNull IoTResponse response) {
Toast.makeText(MainActivity.this, "发送验证码成功", Toast.LENGTH_SHORT).show();
}
});

val verifyCode = ""
OpenAccount.userDelete(verifyCode, object : IoTCallback {
override fun onFailure(request: IoTRequest?, exception: IoTSDKError) {
showToast(R.string.label_failed)
}

override fun onResponse(request: IoTRequest, response: IoTResponse) {
doLogout()
}
})

自有账号体系

需要在控制台配置好OAuth2协议交互所需AK/SK及接口地址

登录

import com.polaris.iot.appsdk.libaccount.model.UserLoginReq;
import com.polaris.iot.appsdk.libaccount.enums.AccountType;
import com.polaris.iot.appsdk.libaccount.enums.PasswordType;
import com.polaris.iot.appsdk.libcommon.constants.IoTSDKError;
import com.polaris.iot.appsdk.libapiclient.request.IoTRequest;
import com.polaris.iot.appsdk.libaccount.enums.VerifyCodeType;
import com.polaris.iot.appsdk.libaccount.OpenAccount;
import com.polaris.iot.appsdk.libcommon.utils.MD5Utils;

/**
*自有账号登录后分配的code
*/
String authCode = "";

OpenAccount.login(authCode, new IoTCallback() {
@Override
public void onFailure(@Nullable IoTRequest request, @NonNull IoTSDKError exception) {
Toast.makeText(MainActivity.this, "登录失败:" + exception.getMessage(), Toast.LENGTH_SHORT).show();
}

@Override
public void onResponse(@NonNull IoTRequest request, @NonNull IoTResponse response) {
onLoginSuccess();
}
});